Se questo è per l'esplorazione per vedere cosa sta succedendo, consiglierei di guardare IPython . Ciò aggiunge varie scorciatoie per ottenere una documentazione, proprietà e persino un codice sorgente degli oggetti. Ad esempio aggiungendo un "?" a una funzione fornirà l'aiuto per l'oggetto (effettivamente una scorciatoia per "help (obj)", dove usando due? "(" func??
") verrà visualizzato il codice sorgente se è disponibile.
Ci sono anche molte altre comodità, come il completamento delle schede, la stampa piuttosto dei risultati, la cronologia dei risultati ecc. Che lo rendono molto utile per questo tipo di programmazione esplorativa.
Per un uso più programmatico di introspezione, i comandi incorporati di base come dir()
, vars()
, getattr
ecc sarà utile, ma è merita il vostro tempo di controllare le ispezionare modulo. Per recuperare l'origine di una funzione, utilizzare " inspect.getsource
" ad esempio, applicandolo a se stesso:
>>> 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
è spesso utile se hai a che fare con funzioni di wrapping o manipolazione, in quanto fornirà i nomi e i valori predefiniti dei parametri delle funzioni.