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

Rag*_*age 10 python python-2.7

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

测试:

import test2
def aFunction():
    print "hi there"
Run Code Online (Sandbox Code Playgroud)

测试2:

import test
aFunction()
Run Code Online (Sandbox Code Playgroud)

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

from test import aFunction
Run Code Online (Sandbox Code Playgroud)

和:

from test import *
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 14

您正在创建循环导入.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()
Run Code Online (Sandbox Code Playgroud)