如果我想以简化的方式解释这个问题,我有两个A.ipynb
和B.ipynb
文件。在文件B
中,我从文件A
中的__main__
外部调用了一个函数,但我无法访问它,并给出了NameError: name 'do' is not defined
错误
文件A.ipynb
:
if __name__ == "__main__":
def do(value):
print(value)
def func(value):
do(value)
文件B.ipynb
:
import import_ipynb
from A import *
func('some text')
我想在执行文件B
时,在控制台中看到"一些文本"作为输出。我认为(以任何可能的方式(:
def func(value):
main().do(value)
可以解决问题。
我认为您关注的是func()
丢失/未定义,而实际上是do()
丢失或未定义。
您的文件B能够找到func()
的定义,但随后它尝试调用尚未定义的do()
,因为if __name__
子句阻止了它。