eval() を使用していくつかの関数を実行しようとしていますが、それらを実行するための何らかの環境を作成する必要があります。ドキュメントには、グローバルを 2 番目のパラメーターとして eval() に渡すことができると記載されています。
しかし、私の場合はうまくいかないようです。簡略化した例を次に示します (変数グローバルを宣言し、globals() を使用するという 2 つのアプローチを試しましたが、どちらも機能しません)。
ファイルscript.py :
import test
global test_variable
test_variable = 'test_value'
g = globals()
g['test_variable'] = 'test_value'
eval('test.my_func()', g)
ファイルtest.py :
def my_func():
global test_variable
print repr(test_variable)
そして、私は得ています:
NameError: グローバル名 'test_variable' が定義されていません。
test_variable
それをに渡すにはどうすればよいmy_func()
ですか?パラメータとして渡すことができないと仮定します。