Se for para exploração para ver o que está acontecendo, eu recomendo olhar para o IPython . Isso adiciona vários atalhos para obter a documentação, as propriedades e até o código fonte dos objetos. Por exemplo, anexando um "?" para uma função fornecerá a ajuda para o objeto (efetivamente um atalho para "help (obj)", enquanto o uso de dois? 's (" func??
") exibirá o código fonte, se estiver disponível.
Também existem muitas conveniências adicionais, como preenchimento de guias, impressão bonita de resultados, histórico de resultados etc. que o tornam muito útil para esse tipo de programação exploratória.
Para uso mais programático de introspecção, os builtins básicos como dir()
, vars()
, getattr
etc vai ser útil, mas é bem vale o seu tempo para verificar a inspecionar módulo. Para buscar a fonte de uma função, use " inspect.getsource
" por exemplo, aplicando-a a si mesma:
>>> 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
também é frequentemente útil se você estiver lidando com a quebra ou manipulação de funções, pois fornecerá os nomes e os valores padrão dos parâmetros de função.