私はカスタムPythonインタプリタ型アプリケーションを作成しようとしています。私は与えられたコードを実行するためにexec文(Python 2.7.6)を使用していますが、グローバルは期待通りに動作しません。誰かがこれが動作しない理由を説明してもらえ:Python execでglobalsを使用する
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