How to see the code definiton in the shell ?

J. Cliff Dyer jcd at sdf.lonestar.org
Wed May 13 19:26:18 CEST 2009


On Wed, 2009-05-13 at 09:40 -0700, Mohan Parthasarathy wrote:
> Hi,
> 
> I am new to Python. I tried searching this but could not find an
> answer. In the interactive shell, I write a new function and I want to
> be able to see all the code that I wrote at a later time. Just typing
> the function name only shows 
> 
> >>> allmethods
> <function allmethods at 0x822b0>
> 
> How do I see the actual code ?
> 
> thanks
> mohan
> 

The function definition itself has been compiled down to bytecode.  You
can see the bytecode as follows:

>>> def one():
...     return 1
...
>>> print one.func_code.co_code  # not very readable
'd\x01\x00S'
>>> import dis # python disassembler
>>> dis.dis(one.func_code.co_code)
          0 LOAD_CONST          1 (1)
          3 RETURN_VALUE   

or just run dis.dis on the function itself

>>> def two():
...     import math
...     return (math.e ** (0+1J*math.pi)) + 3
... 
>>> two()
(2+1.2246063538223773e-16j)
>>> two.func_code.co_code
'd\x01\x00d\x00\x00k\x00\x00}\x00\x00|\x00\x00i\x01\x00d\x02\x00d\x03
\x00|\x00\x00i\x02\x00\x14\x17\x13d\x04\x00\x17S'
>>> dis.dis(two)
  2           0 LOAD_CONST               1 (-1)
              3 LOAD_CONST               0 (None)
              6 IMPORT_NAME              0 (math)
              9 STORE_FAST               0 (math)

  3          12 LOAD_FAST                0 (math)
             15 LOAD_ATTR                1 (e)
             18 LOAD_CONST               2 (0)
             21 LOAD_CONST               3 (1j)
             24 LOAD_FAST                0 (math)
             27 LOAD_ATTR                2 (pi)
             30 BINARY_MULTIPLY     
             31 BINARY_ADD          
             32 BINARY_POWER        
             33 LOAD_CONST               4 (3)
             36 BINARY_ADD          
             37 RETURN_VALUE        






More information about the Python-list mailing list