Hallo, wie kann ich in Python dynamische Variablennamen erzeugen? Ich möchte quasi einen Variable VAR erzeugen, die aber einen fortlaufenenden index hat - dieser wird per argument übergeben: def var(index): VAR(index) := 12345; ... Je nachdem, welchen Wert index hat, soll die VAR nun 1 oder 5 oder was auch immer sein. 'T' + str(index) := 12345; Gibts da was? exec und eval tuns da ja wohl nicht, oder? Klaus.
Alle Variablen werden in Python in einem dict gespeichert. Anzeigen kann man das durch locals():
1 | >>> locals() |
2 | {'__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', '__name__': '__main__', '__doc__': None} |
3 | |
4 | >>> a = 1 |
5 | >>> locals() |
6 | {'a': 1, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', '__name__': '__main__', '__doc__': None} |
Entsprechend kann man natürlich auch neue Keys erzeugen:
1 | >>> locals()["x"] = 2 |
2 | >>> locals() |
3 | {'a': 1, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', 'x': 2, '__name__': '__main__', '__doc__': None} |
4 | >>> x |
5 | 2
|
Seltsamer Ansatz vom Klaus2. Erinnert mich an Templates bei C++. Wäre es nicht sinnvoller bzw. pythontypischer, dass die Funktion var neu angelegte Instanzen in einer Liste oder einem Dictionary führt? Eine Liste würde man nehmen, wenn index direkt eine Indizierung in der Liste erlaubt. In anderen Programmiersprachen wäre das mit Feldern/Arrays vergleichbar. Ein Dictionary würde man nehmen, wenn der Zugriff über einen String (z.B. zusammengebastelt wie oben) erfolgen soll. In anderen Programmiersprachen wäre das mit assoziativen Arrays vergleichbar.
Ja, danke - ich habe es jetzt anders gelöst, weil die dyn Erzeugung von Variablennamen wohl ziemlich gefährlich ist (Egal, in welcher Sprache). Meine Python Kenntnisse sind 48 Stden alt, daher erwartet nicht zuviel, bitte :) Klaus.
Die Tutorials geordnet für Leser == Nicht-Programmierer bis Leser == auf Python umsteigender Programmierexperte... *Non-Programmer's Tutorial for Python* by Josh Cogliati http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python Learning to Program by Alan Gauld http://www.freenetpages.co.uk/hp/alan.gauld/ How to think like a computer scientist by Jeffrey Elkner, Allen B. Downey and Chris Meyers http://www.openbookproject.net/thinkCSpy/ The Python Tutorial by Guido van Rossum http://docs.python.org/tutorial/ DE: http://python.net/~gherman/publications/tut-de/online/tut/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.