Python-Tools / Dienstprogramme
Die Standardbibliothek enthält eine Reihe von Modulen, die sowohl als Module als auch als Befehlszeilenprogramme verwendet werden können.
Das dis- Modul
Das dis-Modul ist der Python-Disassembler. Es konvertiert Bytecodes in ein Format, das für den menschlichen Verzehr etwas besser geeignet ist.
Sie können den Disassembler über die Befehlszeile ausführen. Es kompiliert das angegebene Skript und druckt die zerlegten Bytecodes in das STDOUT. Sie können dis auch als Modul verwenden. Dasdis Die Funktion verwendet eine Klasse, eine Methode, eine Funktion oder ein Codeobjekt als einziges Argument.
Beispiel
#!/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)
Dies würde das folgende Ergebnis erzeugen -
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
Das pdb- Modul
Das pdb-Modul ist der Standard-Python-Debugger. Es basiert auf dem BDB-Debugger-Framework.
Sie können den Debugger über die Befehlszeile ausführen (geben Sie n [oder next] ein, um zur nächsten Zeile zu gelangen und eine Liste der verfügbaren Befehle abzurufen).
Beispiel
Bevor Sie versuchen zu rennen pdb.pyStellen Sie Ihren Pfad richtig auf das Python lib-Verzeichnis ein. Versuchen wir es also mit dem obigen Beispiel 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)
Das Profil - Modul
Das Profilmodul ist der Standard-Python-Profiler. Sie können den Profiler über die Befehlszeile ausführen -
Beispiel
Lassen Sie uns versuchen, das folgende Programm zu profilieren -
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Versuchen Sie jetzt zu laufen cProfile.pyüber diese Datei sum.py wie folgt -
$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 ......}
Das Tabnanny- Modul
Das Tabnanny-Modul überprüft Python-Quelldateien auf mehrdeutige Einrückungen. Wenn eine Datei Tabulatoren und Leerzeichen so mischt, dass Einrückungen vermieden werden, unabhängig von der verwendeten Tabulatorgröße, beschwert sich das Kindermädchen -
Beispiel
Lassen Sie uns versuchen, das folgende Programm zu profilieren -
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Wenn Sie versuchen würden, eine korrekte Datei mit tabnanny.py zu erstellen, wird dies nicht wie folgt beanstandet:
$tabnanny.py -v sum.py
'sum.py': Clean bill of health.