Ferramentas / utilitários Python

A biblioteca padrão vem com vários módulos que podem ser usados ​​tanto como módulos quanto como utilitários de linha de comando.

O dis Módulo

O módulo dis é o desmontador Python. Ele converte os códigos de byte em um formato um pouco mais apropriado para o consumo humano.

Você pode executar o desmontador a partir da linha de comando. Ele compila o script fornecido e imprime os códigos de byte desmontados no STDOUT. Você também pode usar dis como um módulo. odis function leva uma classe, método, função ou objeto de código como seu único argumento.

Exemplo

#!/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)

Isso produziria o seguinte resultado -

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

O Módulo PDB

O módulo pdb é o depurador Python padrão. É baseado na estrutura do depurador bdb.

Você pode executar o depurador a partir da linha de comando (digite n [ou próximo] para ir para a próxima linha e ajudar a obter uma lista de comandos disponíveis) -

Exemplo

Antes de tentar correr pdb.py, defina seu caminho corretamente para o diretório lib do Python. Então, vamos tentar com o exemplo acima 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)

O Módulo de Perfil

O módulo de perfil é o criador de perfil Python padrão. Você pode executar o profiler na linha de comando -

Exemplo

Vamos tentar traçar o perfil do seguinte programa -

#!/usr/bin/python

vara = 10
varb = 20

sum = vara + varb
print "vara + varb = %d" % sum

Agora, tente correr cProfile.pysobre este arquivo sum.py da seguinte forma -

$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 ......}

O Módulo Tabnanny

O módulo tabnanny verifica os arquivos fonte Python quanto a indentação ambígua. Se um arquivo mistura tabulações e espaços de uma forma que elimina o recuo, não importa o tamanho da guia que você está usando, a babá reclama -

Exemplo

Vamos tentar traçar o perfil do seguinte programa -

#!/usr/bin/python

vara = 10
varb = 20

sum = vara + varb
print "vara + varb = %d" % sum

Se você tentar um arquivo correto com tabnanny.py, ele não reclamará da seguinte maneira -

$tabnanny.py -v sum.py
'sum.py': Clean bill of health.