标准库带有许多可用作模块和命令行实用程序的模块。
dis模块是Python反汇编器。它将字节码转换为稍微更适合人类消费的格式。
您可以从命令行运行反汇编程序。它编译给定的脚本并将反汇编的字节代码打印到STDOUT。您也可以使用dis作为模块。在DIS函数采用一个类,方法,函数或代码对象作为单个参数。
#!/usr/bin/python import dis def sum(): vara = 10 varb = 20 sum = vara + varb print "vara + varb = %d" % sum # Call dis function for the function. dis.dis(sum)
输出结果如下 -
6 0 LOAD_CONST 1 (10) 3 STORE_FAST 0 (vara) 7 6 LOAD_CONST 2 (20) 9 STORE_FAST 1 (varb) 9 12 LOAD_FAST 0 (vara) 15 LOAD_FAST 1 (varb) 18 BINARY_ADD 19 STORE_FAST 2 (sum) 10 22 LOAD_CONST 3 ("vara + varb = %d") 25 LOAD_FAST 2 (sum) 28 BINARY_MODULO 29 PRINT_ITEM 30 PRINT_NEWLINE 31 LOAD_CONST 0 (None) 34 RETURN_VALUE
pdb模块是标准的Python调试器。它基于bdb调试器框架。
您可以从命令行运行调试器(输入n [或next]以转到下一行,并帮助获取可用命令的列表)
在尝试运行pdb.py之前,将路径正确设置为Python lib目录。所以让我们试试上面的例子sum.py -
$pdb.py sum.py > /test/sum.py(3)<module>() -> import dis (Pdb) n > /test/sum.py(5)<module>() -> def sum(): (Pdb) n >/test/sum.py(14)<module>() -> dis.dis(sum) (Pdb) n 6 0 LOAD_CONST 1 (10) 3 STORE_FAST 0 (vara) 7 6 LOAD_CONST 2 (20) 9 STORE_FAST 1 (varb) 9 12 LOAD_FAST 0 (vara) 15 LOAD_FAST 1 (varb) 18 BINARY_ADD 19 STORE_FAST 2 (sum) 10 22 LOAD_CONST 3 ("vara + varb = %d") 25 LOAD_FAST 2 (sum) 28 BINARY_MODULO 29 PRINT_ITEM 30 PRINT_NEWLINE 31 LOAD_CONST 0 (None) 34 RETURN_VALUE --Return-- > /test/sum.py(14)<module>()->None -v dis.dis(sum) (Pdb) n --Return-- > <string>(1)<module>()->None (Pdb)
配置文件模块是标准的Python分析器。您可以从命令行运行概要分析器 -
让我们尝试配置以下程序 -
#!/usr/bin/python vara = 10 varb = 20 sum = vara + varb print "vara + varb = %d" % sum
现在,尝试运行cProfile.py在这个文件sum.py如下-
$cProfile.py sum.py vara + varb = 30 4 function calls in 0.000 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno 1 0.000 0.000 0.000 0.000 <string>:1(<module>) 1 0.000 0.000 0.000 0.000 sum.py:3(<module>) 1 0.000 0.000 0.000 0.000 {execfile} 1 0.000 0.000 0.000 0.000 {method ......}
tabnanny模块检查Python源文件是否有模糊的缩进。如果一个文件混合了标签和空格,以避免缩进,无论你使用什么标签大小,保姆抱怨 -
让我们尝试配置以下程序 -
#!/usr/bin/python vara = 10 varb = 20 sum = vara + varb print "vara + varb = %d" % sum
如果你使用tabnanny.py在线运行正确的文件,那么它不会如下 -
$tabnanny.py -v sum.py "sum.py": Clean bill of health.