Anche se in genere sono d'accordo sul fatto che inspect
è una buona risposta, si riduce quando la classe (e quindi il metodo di classe) è stata definita nell'interprete.
Se si utilizza dill.source.getsource
da dill
, è possibile ottenere l'origine di funzioni e lambda, anche se sono definiti in modo interattivo. Può anche ottenere il codice per i metodi e le funzioni delle classi associati o non definiti definiti in curry ... tuttavia, potresti non essere in grado di compilare quel codice senza il codice dell'oggetto che lo racchiude.
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
Per builtin
funzioni o metodi, dill.source
non funzionerà ... TUTTAVIA ...
Ancora non potrebbe essere necessario ricorrere all'utilizzo di un editor per aprire il file con il codice sorgente in esso (come suggerito in altre risposte). C'è un nuovo pacchetto chiamato cinspect
che pretende di essere in grado di visualizzare la fonte per builtins
.
fonte
2015-01-22 15:53:25
Si prega di non chiamare la variabile 'next' perché ombreggia il 'next' incorporato. – Matthias
@ Mattias, grazie. –