Bin wegen folgendem Problem noch auf der Suche nach einer vernünftigen Alternative:
In der Dokumentation von exec() (so sagt es jedenfalls IDLE) wird der lokale Kontext berücksichtigt.
Entweder habe ich das komplett falsch verstanden, falsch geschrieben oder er macht es falsch:
Code: Alles auswählen
def f():
x = 0
exec("x = 1")
return x
Ich habe ein bisschen rumgesucht, was das angeht, bin aber nicht so schlau draus geworden ...
Bisher hat bei mir exec nur in globalem Kontext funktioniert.
Beispiel:
Code: Alles auswählen
x = 0
exec("x = 1")
print(x)
Trotzdem funktioniert auch folgendes nicht wie erwartet:
Code: Alles auswählen
x = 2
def f():
global x
exec("x = 1")
return x
Sollte es an der Indentation liegen, weiß ich bei Himmel nicht, wie ich die im in exec() einzugebenden String verwirklichen soll.
Belehrt mich eines Besseren!