Wie RedBlueThing und analog sagten:
dir()
gibt eine Liste der Variablen im Geltungsbereich
globals()
gibt ein Wörterbuch der globalen Variablen
locals()
gibt ein Wörterbuch der lokalen Variablen
Mit der interaktiven Shell (Version 2.6.9) können Sie nach der Erstellung von Variablen a = 1
y b = 2
Laufen dir()
da
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'b']
läuft locals()
da
{'a': 1, 'b': 2, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
Laufen globals()
ergibt genau die gleiche Antwort wie locals()
in diesem Fall.
Ich habe mich nicht mit Modulen beschäftigt, daher sind alle Variablen sowohl als lokale als auch als globale Variablen verfügbar. locals()
y globals()
die Werte der Variablen sowie die Namen auflisten; dir()
listet nur die Namen auf.
Wenn ich ein Modul importiere und ausführe locals()
ou globals()
im Inneren des Moduls, dir()
gibt immer noch nur eine geringe Anzahl von Variablen; sie fügt hinzu __file__
zu den oben aufgeführten Variablen. locals()
y globals()
listet ebenfalls dieselben Variablen auf, aber beim Ausdrucken des Wörterbuchwerts für __builtin__
wird eine weitaus größere Anzahl von Variablen aufgeführt: integrierte Funktionen, Ausnahmen und Typen wie " 'type': <type 'type'>
", und nicht nur die kurze <module '__builtin__' (built-in)>
wie oben gezeigt.
Für mehr Informationen über dir()
siehe Python 2.7 Kurzreferenz an der New Mexico Tech oder die Funktion dir() unter ibiblio.org.
Für mehr Informationen über locals()
y globals()
siehe Lokale und globale Daten bei Dive Into Python und eine Seite über Globale an der New Mexico Tech.
[Kommentar: @Kurt: Sie haben einen Link zu alle-variablen-in-einem-programm-deiner-lieblings-sprache-aufzählen-oder-auflisten aber diese Antwort enthält einen Fehler. Das Problem dabei ist: type(name)
in diesem Beispiel wird immer zurückgegeben <type 'str'>
. Sie erhalten eine Liste der Variablen, die die Frage beantwortet, aber mit den falschen Typen daneben. Dies war in Ihrem Beispiel nicht offensichtlich, da alle Variablen ohnehin Strings waren; was jedoch zurückgegeben wird, ist der Typ des Variablennamens und nicht der Typ der Variablen. Um das Problem zu beheben: Anstelle von print type(name)
verwenden. print eval('type(' + name + ')')
. Ich entschuldige mich dafür, dass ich einen Kommentar in den Antwortteil geschrieben habe, aber ich habe keine Rechte zum Schreiben von Kommentaren, und die andere Frage ist geschlossen].