Strumenti / utilità Python
La libreria standard include una serie di moduli che possono essere utilizzati sia come moduli che come utilità della riga di comando.
Il modulo dis
Il modulo dis è il disassemblatore di Python. Converte i codici byte in un formato leggermente più appropriato per il consumo umano.
È possibile eseguire il disassemblatore dalla riga di comando. Compila lo script dato e stampa i byte code disassemblati su STDOUT. Puoi anche usare dis come modulo. Ildis funzione accetta una classe, un metodo, una funzione o un oggetto codice come singolo argomento.
Esempio
#!/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)
Ciò produrrebbe il seguente risultato:
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
Il modulo pdb
Il modulo pdb è il debugger Python standard. Si basa sul framework del debugger bdb.
Puoi eseguire il debugger dalla riga di comando (digita n [o successivo] per andare alla riga successiva e aiuto per ottenere un elenco dei comandi disponibili) -
Esempio
Prima di provare a correre pdb.py, imposta correttamente il tuo percorso alla directory lib di Python. Quindi proviamo con l'esempio sopra 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)
Il modulo del profilo
Il modulo del profilo è il profiler Python standard. Puoi eseguire il profiler dalla riga di comando:
Esempio
Proviamo a profilare il seguente programma:
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Ora prova a correre cProfile.pysu questo file sum.py come segue:
$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 ......}
Il modulo tabnanny
Il modulo tabnanny controlla i file sorgente Python per il rientro ambiguo. Se un file mescola tab e spazi in un modo che elimina il rientro, indipendentemente dalla dimensione della tabulazione che stai utilizzando, la tata si lamenta:
Esempio
Proviamo a profilare il seguente programma:
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Se provi un file corretto con tabnanny.py, non si lamenterà come segue:
$tabnanny.py -v sum.py
'sum.py': Clean bill of health.