source code of a function object

anton muhin antonmuhin.REMOVE.ME.FOR.REAL.MAIL at rambler.ru
Thu Nov 13 10:25:14 EST 2003


Fernando Rodriguez wrote:

> Hi,
> 
> Is ti possible to get the source code of a given function object? O:-)
> 
> TIA

I'm not an expert, but I'd say that mostly yes, however:

def foo():
     pass

bar_code_block = compile('def bar(): pass', '<string>', 'exec')
exec bar_code_block

import inspect

assert 'foo' in locals()
print inspect.getsource(foo)

assert 'bar' in locals()
print inspect.getsource(bar)

Python2.3:
def foo():
     pass

Traceback (most recent call last):
   File "source.py", line 13, in ?
     print inspect.getsource(bar)
   File "D:\Python23\lib\inspect.py", line 549, in getsource
     lines, lnum = getsourcelines(object)
   File "D:\Python23\lib\inspect.py", line 538, in getsourcelines
     lines, lnum = findsource(object)
   File "D:\Python23\lib\inspect.py", line 408, in findsource
     raise IOError('could not get source code')
IOError: could not get source code

Therefore, I'd suggest that you can get source code of functions that 
are not created with eval/exec etc.

of course, you cannot get source code of C functions (e.g. most of 
builtins, I suppose).

regards,
anton.





More information about the Python-list mailing list