Wenn dies zur Exploration ist, um zu sehen, was vor sich geht, würde ich empfehlen, IPython zu betrachten. Dies fügt verschiedene Verknüpfungen hinzu, um eine Objektdokumentation, Eigenschaften und sogar Quellcode zu erhalten. Zum Beispiel hängt ein "?" zu einer Funktion wird die Hilfe für das Objekt geben (effektiv eine Abkürzung für "Hilfe (Obj)", während mit zwei? 's ("func??
") wird der Quellcode angezeigt, wenn es verfügbar ist.
Es gibt auch eine Menge zusätzlicher Annehmlichkeiten, wie Tabulatorvervollständigung, hübsches Drucken von Ergebnissen, Ergebnishistorie usw., die es sehr nützlich für diese Art der explorativen Programmierung machen.
Für weitere programmatische Verwendung von Selbstbeobachtung, die grundlegenden builtins wie dir()
, vars()
werden getattr
usw. nützlich sein, aber es ist auch Ihre Zeit wert, die inspect Modul zu überprüfen. Um die Quelle einer Funktion zu holen, verwenden Sie „inspect.getsource
“ zB Anwendung auf sich selbst:
>>> 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
wird auch häufig nützlich, wenn Sie mit der Verpackung oder Manipulation von Funktionen zu tun haben, wie es die Namen geben und den Standard Werte von Funktionsparametern.
Ich würde diese Reihenfolge umkehren. – bayer
Die Quelle ist informativer als dir() und eine bessere Gewohnheit zu entwickeln. –
ich bitte mich zu unterscheiden. dir() ist nur so viel schneller und in 99% der Fälle lasst ihr herausfinden, was ihr in Kombination mit help() braucht. – bayer