我正在嘗試創建一個自定義python解釋器類型的應用程序。我使用exec語句(在Python 2.7.6中)來執行給定的代碼,但全局變量沒有按預期的那樣工作。可能有人解釋爲什麼這不起作用:在Python中使用全局變量exec
def print_x():
print(x)
g = {'x': 10, 'print_x': print_x}
l = {}
exec('print_x()', g, l)
的結果(print_x功能是否g或L),是一個錯誤:
NameError: global name 'x' is not defined
所以,不要對全局傳遞給exec不繼承到所謂的功能?
所以exec不知道如何解析你的字典g – dmitryro
但我可以使用exec('print(x)',g,l)就好了。它不適用於print_x函數。 – jordanwh
http://stackoverflow.com/questions/2904274/globals-and-locals-in-python-exec - 與你的情況類似 – dmitryro