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.