Voir le bytecode Python

Comme on en apprend tous les jours, j’ai aujourd’hui appris qu’il est très simple de voir le bytecode d’une fonction (en tout cas, pour l’implémentation de référence, CPython). Il suffit pour cela d’utiliser le module dis, qui est fourni par défaut dans Python.

Logo Python

Voici un exemple en Python 2.7.5 :

>>> def op(a,b,c):
...     return a + b - c * a
... 
>>> op
<function op at 0x10b815938>
>>> import dis
>>> dis.dis(op)
  2           0 LOAD_FAST                0 (a)
              3 LOAD_FAST                1 (b)
              6 BINARY_ADD          
              7 LOAD_FAST                2 (c)
             10 LOAD_FAST                0 (a)
             13 BINARY_MULTIPLY     
             14 BINARY_SUBTRACT     
             15 RETURN_VALUE        
>>> 

La page de documentation décrit aussi les instructions du bytecode.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s