Yeap. I find it great for prototyping: I code in the IPython shell, and then I dump the code of the various functions I wrote to a file, using func_code.
def makedumper(filen):
def dumpfunc(func):
with open(filen, 'a') as f:
file.write("\n\n{}".format(func.func_code))
return dumpfunc
#then to use it:
dump = makedumper("sourcefile")
dump(func1)
dump(func2)
You can not only get it, you can manipulate it at runtime as you wish. I may recommend checking out the python bytecode format, its pretty straightforward. See the module 'dis' for more.