あなたは試すことができinspect.getsource()
ます。ただし、常に機能するとは限りません。
ipythonの例:
In [1]: import inspect
In [2]: def foo():
...: print 'hello'
...:
In [3]: inspect.getsource(foo)
Out[3]: u"def foo():\n print 'hello'\n"
ipythonでは、inspectをインポートする前または後に関数を定義するかどうかは関係ありません。
In [1]: def foo():
...: print 'hello'
...:
In [2]: import inspect
In [3]: inspect.getsource(foo)
Out[3]: u"def foo():\n print 'hello'\n"
必要最低限のcpythonインタラクティブプロンプトでは、まったく機能しませんでした。
Python 2.7.3 (default, Jul 26 2012, 19:08:05)
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
... print 'hello'
...
>>> import inspect
>>> inspect.getsource(foo)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/inspect.py", line 701, in getsource
lines, lnum = getsourcelines(object)
File "/usr/local/lib/python2.7/inspect.py", line 690, in getsourcelines
lines, lnum = findsource(object)
File "/usr/local/lib/python2.7/inspect.py", line 538, in findsource
raise IOError('could not get source code')
IOError: could not get source code
>>> def bar():
... print 'second try'
...
>>> inspect.getsource(bar)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/inspect.py", line 701, in getsource
lines, lnum = getsourcelines(object)
File "/usr/local/lib/python2.7/inspect.py", line 690, in getsourcelines
lines, lnum = findsource(object)
File "/usr/local/lib/python2.7/inspect.py", line 538, in findsource
raise IOError('could not get source code')
IOError: could not get source code
IDLEは基本的に使用しないので、試しませんでした。インタラクティブな実験にはipythonを、編集にはemacsを好みます。