Mögliche Duplizieren:
declaring a global dynamic variable in pythonExec-Anweisung nicht richtig Namen definiert
>>> def f():
global cat
exec 'cat'+'="meow"'
return
>>> f()
>>> cat
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
cat
NameError: name 'cat' is not defined
Dies ist nur ein abgespeckte Beispiel für die Frage, die mir begegnet ist. In meinem eigentlichen Skript muss ich verschiedene Instanzen einer Klasse erstellen und benennen, daher die exec-Anweisung.
Gerade
exec 'cat'+'="meow"'
direkt in der Shell Aufruf funktioniert gut, aber sobald es in einer Funktion verpackt ist, es scheint nicht mehr zu funktionieren.
es ist immer noch eine sehr schlechte Idee! –
Entschuldigung, während ich weglaufe, um ein PEP zu schreiben, wenn ich das Schlüsselwort 'global' durch' global_and_I_really_understand_why_global_is_almost_always_bad' ersetzt habe. (und möglicherweise eine ähnliche PEP für 'exec'). – geoffspear
Und übrigens, die erste 'globale Katze' ist völlig unnötig; nur der in der 'exec' ist in dem Bereich, in dem der Name verwendet wird. – geoffspear