简介
IPython是一款高效的python交互式解释器,相比python自带的python shell功能更多更强大。它的强大体现在交互式计算和软件开发等方面,能够提高生产力。并且还能跟操作系统shell和文件之间产生互动,有助于提高工作效率。
安装和使用
可以直接通过pip
命令安装IPython:
1 |
pip install ipython |
安装成功后,像打开python一样,直接执行ipython
就能打开IPython:
在这里可以执行各种python语句,按下回车得到结果:
1 2 3 4 |
In [1]: a = 1 In [2]: a Out[2]: 1 |
tab键补全
在输入过程中,可以通过tab
键补全相关的变量、关键字和方法。节省许多不必要的时间以及减少输入错误,这点对新手来说非常重要。
内省
通过在变量的前面或后面加上一个?
可以将该对象的通用信息显示出来:
1 2 3 4 5 6 7 |
In [5]: b? Type: list String form: [1, 2, 3] Length: 3 Docstring: list() -> new empty list list(iterable) -> new list initialized from iterable's items |
除此之外,还能够搜索命名空间:
1 2 3 4 5 6 7 8 9 10 |
In [6]: import numpy as np In [7]: np.arr*? np.array np.array2string np.array_equal np.array_equiv np.array_repr np.array_split np.array_str |
常用快捷键命令
IPython中常用的快捷命令如下:
命令 | 描述 |
---|---|
(ctrl+p)或向上箭头键 | 后向搜索命令历史中以当前输入的文本开头的命令 |
(ctrl+n)或向下箭头键 | 前向搜索命令历史中以当前输入的文本开头的命令 |
ctrl+r | 按行读取的反向历史搜索 |
ctrl+shift+v | 从剪贴板粘贴文本 |
ctrl+c | 中止当前正在执行的代码 |
ctrl+a | 将光标移至行首 |
ctrl+e | 将光标移至行尾 |
ctrl+k | 删除从光标开始至行尾的文本 |
ctrl+u | 清除当前行的所有文本 |
ctrl+f | 将光标向前移动一个字符 |
ctrl+b | 将光标向后移动一个字符 |
ctrl+l | 清屏 |
魔术命令
在IPython中有一些命令可以完成许多有趣的操作,称为魔术命令。常见的魔术命令如下:
命令 | 描述 |
---|---|
%quickref | 显示IPython的快速参考 |
%magic | 显示所有魔术命令的详细文档 |
%debug | 从最新的异常跟踪的底部进入交互式调试器 |
%hist | 打印命令的输入历史 |
%pdb | 在异常发生后自动进入调试器 |
%paste | 执行剪贴板中的Python代码 |
%cpaste | 打开一个特殊提示符以便手工粘贴待执行的Python代码 |
%reset | 删除interactive命名空间中的全部变量名称 |
%page OBJECT | 通过分页器打印输出OBJECT |
%run script.py | 在IPython中执行一个python脚本 |
%prun statement | 通过cProfile执行statement,并打印分析器的输出结果 |
%time statement | 报告statement的执行时间 |
%timeit statement | 多次执行statement以计算系综平均执行时间。对那些执行时间非常小的代码很有用 |
%who、%who_ls、%whos | 显示interactive命名空间中定义的变量,信息级别/冗余度可变 |
%xdel variable | 删除variable,并尝试清除其在IPython中的对象上的一切引用 |
魔术命令默认可以不带百分号也能使用。接下来讲介绍几个非常实用的魔术命令。
%paste
假设我们复制了如下代码:
1 2 |
for i in range(5): print(i) |
接下来在IPython中输入%paste
或paste
就能够直接将剪切板中的代码放到IPython中立即执行。
代码演示:
1 2 3 4 5 6 7 8 9 10 |
In [1]: %paste for i in range(5): print(i) ## -- End pasted text -- 0 1 2 3 4 |
%cpaste
与%paste
功能相似,只是多了一步,需要在输入%cpaste
之后,手动粘贴代码到下面,最后输入--
结束粘贴过程,并执行程序。
代码演示:
1 2 3 4 5 6 7 8 9 10 |
In [1]: %cpaste Pasting code; enter '--' alone on the line to stop or use Ctrl-D. :for i in range(5): : print(i) :-- 0 1 2 3 4 |
%reset
可以去除命名空间中的变量名称。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
In [1]: a = 'finthon' In [2]: a Out[2]: 'finthon' In [3]: %reset Once deleted, variables cannot be recovered. Proceed (y/[n])? y In [4]: a --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-4-3f786850e387> in <module>() ----> 1 a NameError: name 'a' is not defined |
%run
该命令可以在IPython环境下运行python脚本文件。假设我们有一个ccc.py
脚本文件,里面写入如下代码:
1 2 |
for i in range(5): print(i) |
接着在IPython中输入如下代码:
1 2 3 4 5 6 |
In [1]: %run ./ccc.py 0 1 2 3 4 |
%time
该命令能够计算程序运行的时间。
代码演示:
1 2 3 4 5 6 7 |
In [1]: %time %run ./ccc.py 0 1 2 3 4 Wall time: 1.98 ms |
我们计算了ccc.py
脚本运行的墙上时间。
%timeit
因为多次执行%time
得到的结果都不一样,所以就有了该命令,能够计算多次测试的平均时间。
代码演示:
1 2 3 4 5 6 7 8 |
In [1]: %timeit %run ./ccc.py 0 1 2 3 4 ... 792 µs ± 260 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) |
与操作系统交互
IPython可以很方便地调用操作系统的命令,比如执行shell命令、更改目录等。
代码演示:
1 2 3 4 5 |
In [1]: %pwd Out[1]: 'C:\\Users\\DrZ\\Desktop' In [2]: %cd .. C:\Users\DrZ |
与系统相关的IPython魔术命令如下:
命令 | 描述 |
---|---|
!cmd | 在系统shell中执行cmd |
output=!cmd args | 执行cmd,并将stdout存放在output中 |
%alias alias_name cmd | 为系统shell命令定义别名 |
%bookmark | 使用IPython的目录书签系统 |
%cd directory | 将系统工作目录改为directory |
%pwd | 返回系统的当前工作目录 |
%pushd directory | 将当前目录入栈,并转向目标目录 |
%popd | 弹出栈顶目录,并转向该目录 |
%dirs | 返回一个含有当前目录栈的列表 |
%dhist | 打印目录访问历史 |
%env | 以dict形式返回系统环境变量 |
总结
本文介绍了IPython的使用,它的功能很多。熟练掌握一些基本的操作技巧,结合魔术命令能够大大提高开发和测试的效率。除了上文提到的使用方式,IPython还和matplotlib这样的库结合在一起,能够实现交互式的数据分析和可视化。