-

标准库带有许多可用作模块和命令行实用程序的模块。

DIS模块:

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模块

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模块

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.