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的文件中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)