ich es sehr nützlich, neue Variablen in der Lage sein zu finden zuweisen während der Laufzeit zu erstellen und ein Wörterbuch der Ergebnisse für die Verarbeitung später erstellen, das heißt in eine Datei schreiben:Python: Verwenden von Vars() einen String in eine Variable
myDict = {}
for i in range (1,10):
temp = "variable"+str(i)
vars()[temp] = myFunctionThatReturnsData() # variable1= data1, variable2 = data2,etc.
myDict[temp] = vars(temp)
erstellt den Wörterbucheintrag [result1: data1], den ich mit myDict aufrufen kann [result1]. Ich habe vars() benutzt, ohne wirklich zu verstehen, was ich mache. Ich nehme es vars()
ein Wörterbuch mit den lokalen Variablen zurückgibt, und
Vars() [x] = y
erstellt einen neuen Wörterbucheintrag von [x: y] (?)?
Ich habe ein Skript, wo ich ein Wörterbuch mit {input1: data1, input2: data2} übergeben, und ich verwende diese Methode, um alle Werte zu durchlaufen, speichern Sie alle Ergebnisse und geben Sie es in eine Datei. Dieses Codebeispiel befindet sich innerhalb einer Funktion innerhalb einer Klasse und funktioniert.
Meine Quelle der Verwirrung ist, dass ich in verschiedenen Funktionen, wie die Einheimischen gelesen haben() sollte nicht mit verwirrt werden, und wie vars() entspricht (?) Zu Einheimischen() oder Globals() ..
Also meine Frage ist (mindestens) zweifach:
1.What genau funktioniert vars(), oder insbesondere in vars() [x] = y, tun
2.What den Anwendungsbereich von diesem Wörterbuch ist (was ich beachten muss, während ich größere Programme schreibe
3.Whit das ist gute Programmierung trainieren.
Vielen Dank im Voraus!
Ich denke 'vars() ['x'] = 4' und' x = 4' sind eigentlich nur zeitweise äquivalent. Wenn Sie dies in einer Funktion tun und 'x' nicht an anderer Stelle setzen und die Funktion vom Compiler optimiert wird, dann hat das normale Nachschlagen von' x' später in der Funktion (dh, y = x + 2') gewonnen arbeite nicht. Ich denke, der Compiler speichert die Variablen, die er sehen kann (wurden möglicherweise zur Kompilierungszeit definiert), und berücksichtigt diese Art von Shenanigan nicht. Wenn Sie Ihrer Funktion eine exec-Anweisung hinzufügen, versucht der Compiler nicht, die Funktion zu optimieren. –
danke für die nachdenkliche antwort, für das daten in folge: funktion (daten) sieht sehr nützlich aus. Es gibt eine Menge hier, die ich heute gelernt habe, danke! – PPTim
Um weitere Informationen zu diesem Konstrukt zu erhalten, suchen Sie nach "python iterators" – jcdyer