Если это для исследования, чтобы увидеть, что происходит, я бы порекомендовал посмотреть на IPython . Это добавляет различные ярлыки для получения объектов документации, свойств и даже исходного кода. Например, добавив "?" функция даст справку для объекта (по сути, ярлык для «help (obj)», когда используется два? 's ("func??
») будет отображаться исходный код, если он доступен.
Есть также много дополнительных удобств, таких как завершение табуляции, удобная печать результатов, история результатов и т. Д., Которые делают его очень удобным для такого рода исследовательского программирования.
Для более программного использования интроспекции будут полезны базовые встроенные функции, такие как dir()
, vars()
и getattr
т. Д., Но вам стоит потратить время на ознакомление с модулем проверки . Чтобы получить источник функции, используйте " inspect.getsource
", например, применив ее к себе:
>>> print inspect.getsource(inspect.getsource)
def getsource(object):
"""Return the text of the source code for an object.
The argument may be a module, class, method, function, traceback, frame,
or code object. The source code is returned as a single string. An
IOError is raised if the source code cannot be retrieved."""
lines, lnum = getsourcelines(object)
return string.join(lines, '')
inspect.getargspec
также часто полезно, если вы имеете дело с обертыванием или манипулированием функциями, так как оно даст имена и значения по умолчанию параметров функции.