Der folgende Code nicht funktioniert, ich nehme an, weil die Einheimischen() Variable innerhalb des Verstehens auf den verschachtelten Block beziehen, wo Verständnis ausgewertet:mit Einheimischen() innerhalb Wörterbuch Verständnis
def f():
a = 1
b = 2
list_ = ['a', 'b']
dict_ = {x : locals()[x] for x in list_}
ich verwenden könnte globals()
stattdessen, und es scheint zu funktionieren, aber das kann mit einigen zusätzlichen Problemen kommen (zB wenn es eine Variable von einem umgebenden Bereich gab, der zufällig denselben Namen hat).
Gibt es irgendetwas, das das Wörterbuch mit den Variablen genau im Rahmen der Funktion f
machen würde?
Hinweis: Ich mache das, weil ich viele Variablen habe, die ich später in ein Wörterbuch schreiben möchte, aber den Code nicht durch Schreiben dict_['a']
anstelle von a
in der Zwischenzeit verkomplizieren möchte.
ich nicht daran denken haben! Und warum ist es schlecht, Einheimische() so zu benutzen? Ich benutze nichts undokumentiertes, oder? – max
Es ist nicht undokumentiert, aber die Verwendung von 'locals()' kann den Compiler veranlassen, weniger als optimalen Code für die Funktion zu generieren, auf die verwiesen wird. Wenn der Compiler zum Beispiel feststellt, dass er die Verwendung einiger temporärer Variablen (vielleicht eine * andere * Variable in der Funktion, die nicht mit Ihrem Wörterbuch verwandt ist) optimieren kann, kann er dies unter Umständen nicht tun, wenn 'localhosts()' verwendet wird innerhalb der Funktion. Wenn Sie nicht zuerst ein Wörterbuch erstellen, wiederholen Sie sich selbst mit (1) der Zuweisung jeder Variablen und (2) den Namen in der Liste. –
Dann stecke ich fest: http://stackoverflow.com/questions/4067463/alternative-to-locals-in-printing-a-table-with-a-header – max