2.2 增强的Python控制台功能
上一节从Shell的角度看了IPython的功能,这一节我们从Python控制台的角度来看看。
2.2.1 输入历史%hist
IPython会保存所有的输入历史,甚至包括历史会话的。由于随着时间的推移,历史列表会愈来愈庞大,IPython中有方便的机制可以轻松访问输入历史。
最基本的当然是按上下键;如果已经输入几个字符,那么上下键还会匹配已输入的开头。
%hist(%history的别名)命令接受不同的选项,可显示输入历史的不同部分。比如:
# history of line 2 - line 5
%hist 2-5
# line 4 - line 8 of session 201
%hist 201/4-8
# line 7 of previous session
%hist ~1/7
# save to a file
%hist -f filename
还有一个相关的命令是%store,可以将任意的Python变量保存下来,供日后之用。
# save var name
%store name
# delete var name
%store -d name
# recover
%store -r
2.2.2 Python代码的导入导出
导入代码
最简单的情形是复制粘贴之时,特别是对于很多StackOverflow的搬运工而言:)%paste是这些人的福音。
接下来是%run命令,可执行指定的脚步文件。默认情况下,被执行脚本执行于一个空命名空间,这意味着当前定义在控制台的命名空间对脚本来说是不可见的;可通过-i选项来改变这一行为。另外,脚本文件执行完毕后,其中定义的变量在控制台是可见的,这对于调试是很方便的。
import sys
import os
folder = './social/facebook'
if len(sys.argv) > 1:
folder = sys.argv[1]
files = os.listdir(folder)
ids = sorted(set(map(lambda f: int(f.split('.')[0]), files)))
导出代码
%edit做的事情与%run相反,会打开一个编辑器让我们输入代码。更现代和强大的方式是使用IPython Notebook,很快你就会看到。
2.2.3 动态内省(Dynamic introspection)
- Tab自动补全
- 源代码内省:IPython可以显示变量的内部信息,包括源代码。使用?可以查看一个对象的帮助信息,??则可以查看更详细的信息,如果函数定义在文件中,还可以查看它的源代码。此外,还有%psource、%pfile、%pdoc和%pdef等。
2.2.4 交互式调试器
%run -d
%run -d -b29 script.py
ipython --pdb
2.2.5 基准测试
%timeit py_statement
%run -t scripty.py
分析脚本性能
%run -p script.py
对于逐行的分析器,建议了解下line_profiler。