如何从导入的文件中调用函数?例如:
测试:
import test2
def aFunction():
print "hi there"
的Test2:
import test
aFunction()
这给我一个名称错误,说我的函数没有定义。我也试过了:
from test import aFunction
和
from test import *
我也试过在测试中不导入test2。我是从C ++开始使用Python的,所以我担心我会遗漏一些对资深Python程序员来说显而易见的东西......
答案 0 :(得分:13)
您正在创建循环导入。 test.py
导入test2.py
,尝试导入test.py
。
不要这样做。到test2
导入test
时,该模块尚未完成所有代码的执行;该功能尚未定义:
test
,并将一个空模块对象添加到sys.modules
。
行import test2
已运行。
test2
,并将空模块对象添加到sys.modules
。
行import test
已运行。
test
已作为sys.modules
中的模块出现,此对象将返回并绑定到名称test
。下一行尝试运行test.aFunction()
。 test
中不存在此类名称。提出了一个例外。
定义def aFunction()
的行永远不会执行,因为引发了异常。
删除import test2
行,然后直接运行test2.py
,导入该功能将正常工作:
import test
test.aFunction()