Tools/Utilities
优质
小牛编辑
136浏览
2023-12-01
标准库附带了许多模块,既可以用作模块,也可以用作命令行实用程序。
dis模块
dis模块是Python反汇编程序。 它将字节代码转换为稍微适合人类消费的格式。
您可以从命令行运行反汇编程序。 它编译给定的脚本并将反汇编的字节代码打印到STDOUT。 您也可以使用dis作为模块。 dis函数将类,方法,函数或代码对象作为其单个参数。
例子 (Example)
#!/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模块
pdb模块是标准的Python调试器。 它基于bdb调试器框架。
您可以从命令行运行调试器(键入n [或next]以转到下一行并帮助获取可用命令列表) -
例子 (Example)
在尝试运行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)
profile模块
配置文件模块是标准的Python配置文件。 您可以从命令行运行探查器 -
例子 (Example)
让我们尝试分析以下程序 -
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
现在,尝试在此文件sum.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模块
tabnanny模块检查Python源文件是否存在模糊缩进。 如果一个文件以一种抛出缩进的方式混合制表符和空格,无论你使用什么标签大小,保姆都会抱怨 -
例子 (Example)
让我们尝试分析以下程序 -
#!/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.