Wenn ich diesen Code ausführe:
a = '1'
vars()['a'] = '2'
print a
Ich erhalte die folgende Ausgabe:
2
Aber wenn ich diesen Code ausführe:
def bar():
a = '1'
vars()['a'] = '2'
print a
bar()
Ich erhalte die folgende Ausgabe:
1
Meine Frage ist nun, warum das passiert und wie ich erreichen kann, dass der zweite Fall die gleiche Lösung wie der erste Fall liefert.
Bearbeiten:
Konnte nicht wirklich eine Lösung finden, aber ich habe einen kleinen Hack gefunden, um das Problem zu umgehen... Obwohl ich lieber nicht verwenden exec:
def bar():
a = "a"
b = "b"
exec a+"="+b
print a
bar()
So komme ich zum Ergebnis:
b
Wenn jemand eine bessere Lösung finden kann, wäre das großartig. Ich setze keine globalen Variablen auf diese Weise oder tun etwas verrückt, also keine Sorge darüber.