>>>v=[1,2] ist eine globale Variable
>>>String="vwxyz"
>>>String[0]
v
Ich möchte aber [1,2] zurückbekommen, um zum Beispiel [1,2]+[3,4] bilden zu können.
Ich versuchte es mit eval(), habe es aber nicht hinbekommen.
In LOGO gibt es thing 'v, was den Wert der Variable mit dem Namen 'v, also [1,2] zurückgibt.
Gibt es in Python ein vergleichbares Konstrukt?
an den Wert einer Variable kommen, wenn sie als String gegeben ist
Wenn du so etwas machen willst, dann benutzt man in Python keine Variablen. Sondern Datenstrukturen, in diesem Fall ein Woerterbuch.
Code: Alles auswählen
variables = { "v": [1, 2]}
key = "v"
print(variables[key])
-
- User
- Beiträge: 5
- Registriert: Freitag 8. Januar 2021, 18:38
Wenn es, sagen wir mal, 30-40 solche globalen Variablen sind, und jede für eine Liste mit 30-80 Elementen steht.
- pillmuncher
- User
- Beiträge: 1529
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@spätpythonier: Auch dann nimmt man ein dict.
In specifications, Murphy's Law supersedes Ohm's.
- __blackjack__
- User
- Beiträge: 14005
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@spätpythonier: Und um noch mal sparrow zu zitieren: „Und globale Variablen sind etwas, das man nicht benutzen sollte.“
Warum müssen die global sein? Und warum 30—40? Das sind viel zu viele Variablen. Üblicherweise hat man so 5—7 Variablen in einer Funktion. *Lokal*. Weil das die ”Dinge” sind, die man durchschnittlich gleichzeitig im Kopf behalten kann.
Was willst Du denn *eigentlich* damit lösen? Also beschreibe mal das Problem in der Problemdomäne und nicht was Du denkst was die Lösung dafür ist.
Warum müssen die global sein? Und warum 30—40? Das sind viel zu viele Variablen. Üblicherweise hat man so 5—7 Variablen in einer Funktion. *Lokal*. Weil das die ”Dinge” sind, die man durchschnittlich gleichzeitig im Kopf behalten kann.
Was willst Du denn *eigentlich* damit lösen? Also beschreibe mal das Problem in der Problemdomäne und nicht was Du denkst was die Lösung dafür ist.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Das geht schonspätpythonier hat geschrieben: Samstag 9. Januar 2021, 16:16 Ich möchte aber [1,2] zurückbekommen, um zum Beispiel [1,2]+[3,4] bilden zu können.
Code: Alles auswählen
>>> v = [1, 2]
>>> string = "vwxyz"
>>> globals()[string[0]]
[1, 2]
Nehmen wir an, Du hättest eine zweite Liste 'w' und möchtest 'v' auf obige Weise damit erweitern:
Code: Alles auswählen
>>> w = [3, 4]
>>> globals()[string[0]].extend(globals()[string[1]])
>>> globals()[string[0]]
[1, 2, 3, 4]
Daher die Empfehlungen hier, Dictionaries zu verwenden sowie Variablen auf globaler Ebene zu vermeiden. Wenn Du irgendwo "global(s)" siehst, sei es als Keyword oder, wie oben, als Funktionsaufruf, dann gehe einen Schritt zurück, halte ein – und mache einen großen Bogen drum

Man zieht Leuten, die gerade von der Brücke springen wollen, nicht die tiefste Stelle. Auch nicht mir dem Hinweis “hier aber bitte nicht springen”.
Da ist sicher was dran, Programmieren ist aber eine technische Disziplin und da halte ich es durchaus für sinnvoll, ähnlich wie bei einem Handwerk, nicht nur zu zeigen wie die Dinge funktionieren, sondern auch darauf hinzuweisen, was warum nicht funktioniert und deswegen unbedingt zu vermeiden ist.
Ich setze dabei durchaus auf Lernfähigkeit. Denn wenn diese nicht vorhanden ist, kann man sich jegliche Mühe sparen. Und wer jetzt noch global verwendet, dem ist nicht mehr zu helfen.
Deshalb hoffe ich im Sinne des OP, dass Du keine Wetten abschließen brauchst.
Ich setze dabei durchaus auf Lernfähigkeit. Denn wenn diese nicht vorhanden ist, kann man sich jegliche Mühe sparen. Und wer jetzt noch global verwendet, dem ist nicht mehr zu helfen.
Deshalb hoffe ich im Sinne des OP, dass Du keine Wetten abschließen brauchst.
- __blackjack__
- User
- Beiträge: 14005
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@kbr: Du hast hier aber nicht etwas gezeigt was nicht funktioniert sondern Du hast etwas gezeigt was ganz wunderbar funktioniert, aber eine sauschlechte Idee ist. Was ein Anfänger aber nicht merkt, sondern erst wenn er so viel davon Gebrauch macht, dass es viel Arbeit ist das alles wieder loszuwerden.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis