IPython介绍及使用
一、Ipython入门
IPython是一个交互式python命令行。
(1)安装IPython
$ pip3 install ipython
(2)ipython的使用
In代表输入,响应的结果则显示在Out中。与python解释器的使用方法一致。
In [1]: 1+2 Out[1]: 3 In [2]: a=1 In [3]: a+2 Out[3]: 3
二、IPython高级功能
1、TAB键自动补全
2、?:内省、命名空间搜索
内省操作,说明前面是模糊匹配。
命名空间搜索(查看内置方法):a.__*__?
打印方法的字符串信息:
打印自定义函数信息,??会打印出函数体
3、!:执行系统命令
执行复杂命令的时候,需要在命令前加“!”
4、丰富的快捷键
三、ipython魔术命令
1、%run:执行文件代码
# 例如执行下述代码,就可以进行文件编辑 In [21]: !vi test.py
文件编辑如下所示:
利用%run来执行test.py文件:
2、%paste:执行剪贴板代码
%paste执行后,先打印出粘贴的代码,然后打印执行结果。
3、%timeit:评估运行时间
%timeit对一个执行的时间很短的函数跑了很多次最后取了一个平均值。
输出的含义是运行了7次,每次循环了10000次。平均之后算出来这个操作的平均时间是144 µs ± 3.59 µs.
这个方法的意义在于,拿到一个特别微小的指令完成所需要花费的时间,对代码整体的性能优化可能会有帮助。
4、%pdb:自动调试
%pdb on——启动pdb,进入调试模式;
%pdb off——关闭pdb,退出调试模式。
进入调试模式后,在ipython解释器中执行代码,可以通过调试命令调试代码。
调试器常用调试命令如下所示:
命令 功能 h(elp) 显示命令列表 help command 显示command的文档 c(ontinue) 恢复程序的执行 q(uit) 退出调试器,不再执行任何代码 b(reak) number 在当前文件的第number行设置一个断点 b path/to/file.py:number 在指定文件的第number行设置一个断点 s(tep) 单步进入函数调用 n(ext) 执行当前行,并前进到当前级别的下一行 u(p)/d(own) 在函数调用栈中向上或向下移动 a(rgs) 显示当前函数的参数 debug statement 在新的(递归)调试器中调用语句statement l(ist) statement 显示当前行,以及当前栈级别上的上下文参考代码 w(here) 打印当前位置的完整栈跟踪(包括上下文参考代码)
但是最主要最常用的命令还是“p”,即打印,效果如下所示:
5、ipython其他魔术命令
除了上面这些命令外,还具备一些高级的应用:
- 使用命令历史
- 获取输入输出结果
In [47]: a = 1 In [48]: b = 2 In [49]: a + b Out[49]: 3 # 显示上一行的输出 In [50]: _ Out[50]: 3 In [51]: a*b Out[51]: 2 In [52]: _*__ # 上一行的输出和上上行输出相乘 Out[52]: 6 # 拿到输入 In [53]: _i42 Out[53]: 'p a' In [54]: _i52 Out[54]: '_*__'
- 目录标签系统
# 查看当前所有bookmark In [55]: %bookmark -l Current bookmarks: # 将home设置为自己的家目录 In [72]: %bookmark home ~ # 创建一个bookmark In [63]: %bookmark proj /Users/alex/Documents/ In [75]: %bookmark -l # 查看当前所有bookmark Current bookmarks: home -> ~ proj -> /Users/alex/Documents/ # 删除某一个bookmark In [67]: %bookmark -d home # 删除所有bookmark In [69]: %bookmark -r In [70]: %bookmark -l # 查看当前所有bookmark Current bookmarks:
- ipython Notebook(web版的代码展示器)
In [76]: !pip3 install jupyter # jypyter就是开发ipython的公司 # 安装好后再命令行运行notebook,运行后会自动打开一个http://localhost:8888/tree页面 hqs$ jupyter notebook
这个页面其实就是一个文件管理系统,创建一个Notebook:
输入代码并执行: