Outils / utilitaires Python
La bibliothèque standard est livrée avec un certain nombre de modules qui peuvent être utilisés à la fois comme modules et comme utilitaires de ligne de commande.
Le module dis
Le module dis est le désassembleur Python. Il convertit les codes d'octets dans un format légèrement plus approprié pour la consommation humaine.
Vous pouvez exécuter le désassembleur à partir de la ligne de commande. Il compile le script donné et imprime les codes d'octets désassemblés sur le STDOUT. Vous pouvez également utiliser dis comme module. ledis function prend une classe, une méthode, une fonction ou un objet de code comme argument unique.
Exemple
#!/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)
Cela produirait le résultat suivant -
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
Le module pdb
Le module pdb est le débogueur Python standard. Il est basé sur le framework de débogage bdb.
Vous pouvez exécuter le débogueur à partir de la ligne de commande (tapez n [ou suivant] pour aller à la ligne suivante et aider à obtenir une liste des commandes disponibles) -
Exemple
Avant d'essayer de courir pdb.py, définissez correctement votre chemin vers le répertoire lib Python. Alors essayons avec l'exemple ci-dessus 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)
Le module de profil
Le module de profil est le profileur Python standard. Vous pouvez exécuter le profileur à partir de la ligne de commande -
Exemple
Essayons de profiler le programme suivant -
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Maintenant, essayez de courir cProfile.pysur ce fichier sum.py comme suit -
$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 ......}
Le module tabnanny
Le module tabnanny vérifie les fichiers source Python pour une indentation ambiguë. Si un fichier mélange des tabulations et des espaces d'une manière qui supprime l'indentation, quelle que soit la taille de l'onglet que vous utilisez, la nounou se plaint -
Exemple
Essayons de profiler le programme suivant -
#!/usr/bin/python
vara = 10
varb = 20
sum = vara + varb
print "vara + varb = %d" % sum
Si vous essayez un fichier correct avec tabnanny.py, il ne se plaindra pas comme suit -
$tabnanny.py -v sum.py
'sum.py': Clean bill of health.