views:

158

answers:

1

This might be a silly question, but, given the output of, say..

>>> from dis import dis
>>> def myfunc(x):
...     print x ** 2
... 
>>> dis(myfunc)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_POWER        
              7 PRINT_ITEM          
              8 PRINT_NEWLINE       
              9 LOAD_CONST               0 (None)
             12 RETURN_VALUE        

..or a .pyc file - is it possible to reassembling this into a valid piece of Python source code? I.e where reassemble(dis(myfunc)) == "def reassembled_function(x):\n print x ** 2"

Not for any particular practical reason, I'm just curious if this is possible, or has been attempted..

Related

+3  A: 

http://sourceforge.net/projects/decompyle/

Sam Blackburn
This works, but it's quite badly out of date and will have problems with some newer language features (and will probably plain refuse to work on Python 3).
Max Shawabkeh