私は関数とその関数への参照を含む辞書を持っています。データ構造内で関数名をインポートできないのはなぜですか?
def func1(): print('blah')
dict1 = {'func1': func1}
これらを指定の順序でPythonインタプリタに貼り付けると、すべて正常に動作します。
`>>> def func1(): print('blah')
...
>>> func1
<function func1 at 0x7f8939d77730>
>>> func1()
blah
>>> dict1 = {'func1': func1}
>>> dict1['func1']()
blah
`
しかし、私はファイルからdict1
をインポートする場合、インタプリタはfunc1
は、それが定義されていても、定義されていないと言います。ここで何が起こっている
>>> def func1(): print('blah')
...
>>> func1()
blah
>>> from dictfile import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/../dictfile.py", line 1, in <module>
dict1 = {'func1': func1}
NameError: name 'func1' is not defined
>>>
:
dict1 = {'func1': func1}
次に、このインタプリタへ:テキストの単一行を含む
ので、ファイルと 'dictfile.py'?
実行時にfunc1の参照が存在する場合、ファイルからファイルを保存またはロードすることはできません。 –
は、dictに値を代入する 'getattr(module、func1)'のようなものを使います。 –
Raghavaのコメントは有益で有益であり、答えのように聞こえる。あなたは詳細を教えていただけますか? – markling