Se questo è per l'esplorazione per vedere cosa sta succedendo, mi consiglia di guardare IPython. Questo aggiunge varie scorciatoie per ottenere una documentazione di oggetti, proprietà e persino il codice sorgente. Ad esempio, aggiungendo un "?" a una funzione verrà fornito l'aiuto per l'oggetto (in pratica 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 bella stampa dei risultati, la cronologia dei risultati ecc. Che lo rendono molto utile per questo tipo di programmazione esplorativa.
Per ulteriori uso programmatico di introspezione, i comandi incorporati di base come dir()
, vars()
, getattr
ecc saranno utili, ma vale la pena il vostro tempo per verificare il modulo inspect. Per recuperare la fonte di una funzione, usare "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
è anche spesso utile se hai a che fare con lo spostamento o manipolazione di funzioni, in quanto darà i nomi e di default valori dei parametri di funzione.
Vorrei invertire quell'ordine. – bayer
La fonte è più informativa di dir() e una migliore abitudine a svilupparsi. –
Mi permetto di dissentire. dir() è molto più veloce e nel 99% dei casi scopriamo cosa vi serve in combinazione con help(). – bayer