IPython
一、获取帮助和文档
(1) help(formula)
(2)len?
方法(2)不仅适用于查找帮助文档,也适用于对象方法,例如L=[1,2,3]
L.insert?
可以得到对L应用insert函数的具体用法
甚至可以查看对象本身L?
,或者查看自己创建的函数square?
二、获取源代码
square??
如果后缀??不能获得源代码,就说明源代码不是用python语言写的。
三、Tab键补全
(1)如果想对某一个对象应用一些方法,可以L.
(2)导入包自动补全 from itertools import co<TAB>
(3)通配符匹配
四、IPython命令
执行外部文件:%run filename.py (类似R的source)
计算代码运行时间:%timeit +代码
禁止输出:在行末尾添加分号;
查看历史命令:%history
结果没有显示行号; %history -n
结果会输出素所有的历史命令,并且显示行号;%history -n 1-4
显示历史的前四条命令
五、报错和调试
(1)查看报错轨迹:xmode
可以通过轨迹追溯(traceback)定位错误。Spyder默认的打印错误轨迹的模式是Plain;可以切换成%xmode Context
给出的信息较多;%xmode Verbose
还会给出被调用的函数的参数
(2)调试:%debug
在异常点位置打开一个交互式调试提示符ipdb,然后可以通过打印很多中间变量来找到错误原因
六、代码计时和分析
(1)%time
对单个语句的执行时间进行计时,但是不一定准确,适合代码运行时间较长且重复执行会时间有偏差的情况。 %%time
对应多行代码计时。
(2)%timeit
对单个语句重复执行进行计时,相当于多次试验求平均,精确度更高。但是不适合某些排序或者循环(因为不能保证每次执行时间都差不多)。 %%timeit
对应多行代码计时。
(3)%prun
分析整个脚本的耗时情况
(4)%lprun
对有函数逐行进行分析,可以优化函数内部。使用的时候import line_profiler
使用时%lprun -f function function(parameter)
(5)内存分析:使用的时候import memory_profiler
%memit
:直接%memit function()
%mprun
:需要先创建.py模块,然后重新导入函数,具体使用语法和%lprun
一样