해당 함수에 대한 참조가 포함 된 함수와 사전이 있습니다.데이터 구조 내에서 함수 이름을 가져올 수없는 이유
def func1(): print('blah')
dict1 = {'func1': func1}
주어진 순서대로 파이썬 인터프리터에 붙여 넣으면 모두 정상적으로 작동합니다. 내가 파일에서 dict1
을 가져 오는 경우
`>>> def func1(): print('blah')
...
>>> func1
<function func1 at 0x7f8939d77730>
>>> func1()
blah
>>> dict1 = {'func1': func1}
>>> dict1['func1']()
blah
`
는하지만, 인터프리터는 func1
가가 정의되어 있어도, 정의되지 않은 말한다.
그래서 파일 'dictfile.py'한 줄의 텍스트 포함과 :
>>> 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}
를?
런타임에 func1 참조가 존재하므로 파일에서 저장하거나로드 할 수 없습니다. –
은'getattr (module, func1)'과 같이 무언가를 사용하여 dict에 값을 할당합니다. –
Raghava의 코멘트는 유용하고 유익하며 대답과 같게 들립니다. 정교하게 주시겠습니까? – markling