Python:从导入的文件中调用函数

时间:2013-09-27 16:58:13

标签: python python-2.7

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

测试:

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

的Test2:

import test
aFunction()

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

from test import aFunction

from test import *

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

1 个答案:

答案 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()
相关问题