13

如何从导入的文件中调用函数?例如:

测试:

import test2
def aFunction():
    print "hi there"

测试2:

import test
aFunction()

这给了我一个名称错误,说我的函数没有定义。我也试过:

from test import aFunction

和:

from test import *

我也尝试过不在测试中导入 test2。我从 C++ 开始使用 Python,所以我担心我错过了一些对于资深 Python 程序员来说显而易见的东西......

4

1 回答 1

18

您正在创建循环导入。尝试导入的test.pyimports 。test2.pytest.py

不要这样做。到时test2imports 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()
于 2013-09-27T17:01:40.613 回答