1、利用数据分析-IPython

  一个更为高效的交互式Python解释器,还可以直接进行绘图操作的GUI控制台、基于web的交互式笔记本及轻量级的快速并行计算引擎。

1、基础

  • tab

  tab键有自动补全功能

  • 内省

  在一个对象(变量或者函数等)的前面或者后面加上一个问号,就可以打印有关该对象的通用信息,也可以两个问号,打印出来的是简略信息

data?
  • %run

  在ipython中,所有文件都可以通过%run命令当做Python程序执行,然后就可以在IPython的shell中访问,但是如果希望脚本可以访问在IPython命名空间中定义的变量,应该使用%run -i

%run ./test.ipynb
  •  执行剪贴板中的代码

  主要时在这个交互模式下用的,在复制粘贴时,IPython是逐行输入代码的,换行符会被处理成return,会报错,这个时候我们就需要%paste和%cpaste这两个魔术函数,前者可以承载剪切板中的一切文本,并在shell中以整体形式执行,后者和前者差不多,后者有个提示符,可以在enter之前粘贴任意代码,

  • 异常和跟踪

  如果%run执行某段程序法发生了异常,会输出整个调用栈跟踪,可以通过%xmode来控制输出的多少

  • 魔术命令

  通常是要有%,但是也可以通过%automagic打开或者关闭

  可以通过%quickref或者%magic来查询这些命令

  

  • 基于Qt的GUI控制台

  如果安装了PyQt或者PySide,执行下面的命令为其添加绘图功能

ipython qtconsole --pylab=inline
  • 输入和输出变量

  IPython会把输入和输出(返回的对象)的引用保存在爱一些特殊变量中,最近的 两个输出结果分别保存在_和__变量中

  输入的变量保存在_iX中,这个X是变量所在的行号,每个输入变量都有一个输出变量_X,但是在实际测试中_X会显示未定义

  • 记录输入和输出

IPython能记录整个控制台会话,包括输入和输出,执行%logstart即开始记录日志

  • 与操作系统交互

  可以直接在IPython中实现标准的windows或Linux命令

`

  • shell命令和别名

  在IPython中以!开头的命令表示都需要在系统shell中执行,我们还可以把这个输出结果赋值给一个变量,就会保存在这个变量中了

  %alias可以为shell命令自定义简称,这样我们就可以把一些常用的命令 用自定义的命令简化了,这个命令定义的是临时的,会在对话框结束后销毁,所以我们要想创建永久性的,需要配置系统,实际操作中出现了问题

  • IPython有一个简单的目录书签系统,让人能保存常用目录的别名以便实现快速跳转
In [8]: %bookmark fp ./OneDrive/

In [9]: pwd
Out[9]: u'C:\\Users\\Lenovo'

In [10]: cd fp
(bookmark:fp) -> ./OneDrive/

这些命令基本上只能在ipython的shell中使用,在jupyter中可能会报错

2、软件开发工具

   IPython加强了Python内置的pdb调试器,并且还提供了一些常用的代码运行时间及性能分析工具

  • 交互式调试器

  IPython增强了pdb,tab补全、代码高亮、为异常跟踪的每条信息添加上下文参考,%debug命令(在异常发生后立即输入)将会调用那个事后调试器,并直接跳转到引发异常的那个栈帧,u和d可在栈跟踪的各级别之间切换

  设置断点:使用带有-d参数的%run命令,将会在脚本文件中的代码之前先打开调试器,必须立即输入s才能进入脚本,调试命令的优先级高于变量名,这时在变量前面加上感叹号就可查看变量

   下面是常见的调试命令

  • 测试代码的执行条件

    有时候可能会有这个需求,%time和%timeit

    前者一次执行一条语句,然后报道总体的执行时间,但是并不是很精确

    后者对于任意语句,多次执行后产生一个非常精确的平均执行时间

  • 基本性能分析

  代码的性能分析关注的是代码耗费时间的位置,Python中的性能分析工具是cprofile模块,在执行一个程序或代码时,会记录各函数耗费的时间

  主要是在命令行中使用,这个知道就行,以后需要百度

 %run -p -s cumulative ./Desktop/FPF/t1.py
  • 逐行分析函数性能

  可以使用一个叫做line_profiler的小型库,使用其中的一个新的魔术函数%lprun,它可以对一个或多个函数记性逐行性能分析,需要修改IPython配置来启用这个扩展

c.TerminalIPythonApp.extensions=['line_profiler']

3、利用IPython提高代码开发效率的几点提示

  •  重新加载模块依赖项

  当我们import lib时,其中的变量】函数、和引入项都会保存在一个新建的lib模块命名空间中中,下次再导入时,还是这个引用,如果再突然修改后,仍是使用那个老版的lib库

  解决方法:在再次import时,后面reload一下这个库

  当依赖变强时,需要用dreload函数,可以来解决模块深度的重加载

  

4、个性化配置

  IPython shell在外观和行为的大部分内容都是可以配置的,这些配置都定义在一个叫做ipython_config.py的文件中

 

 

  

posted @   凡人歌_F  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示