exec() im lokalen Kontext
Verfasst: Donnerstag 9. Juni 2016, 22:50
Ich benötige in einer meiner Arbeiten exec(), um eins als String gespeicherte Liste in ein Programm einfach einlesen zu können.
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:
Nun, das führt von einer Ausgabe von 0, nicht von einer 1, deren Auswurf für mich eigentlich erwartbarer wäre.
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:
Führt zu 1. Keine Überraschung, das sollte es auch tun. Steht ja auch nicht in einer Funktion.
Trotzdem funktioniert auch folgendes nicht wie erwartet:
Was ich daraus schlussfolgere, ist, dass das Schreiben von exec in definierten Funktionen keinen Sinn macht, weil es nicht das tut, was die "File Scope" dort machen würde.
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!
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 xIch 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 xSollte es an der Indentation liegen, weiß ich bei Himmel nicht, wie ich die im in exec() einzugebenden String verwirklichen soll.
Belehrt mich eines Besseren!