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.