mikrocontroller.net

Forum: PC-Programmierung Dynamisch erzeugte Variablennamenin Python?


Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Günter -.. (guenter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle Variablen werden in Python in einem dict gespeichert. Anzeigen kann 
man das durch locals():
>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', '__name__': '__main__', '__doc__': None}

>>> a = 1
>>> locals()
{'a': 1, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', '__name__': '__main__', '__doc__': None}

Entsprechend kann man natürlich auch neue Keys erzeugen:
>>> locals()["x"] = 2
>>> locals()
{'a': 1, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/etc/pythonstart', 'x': 2, '__name__': '__main__', '__doc__': None}
>>> x
2

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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_Tu...

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/

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.