Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从导入的文件调用函数_Python_Python 2.7 - Fatal编程技术网

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

Python:从导入的文件调用函数,python,python-2.7,Python,Python 2.7,如何从导入的文件调用函数?例如: 测试: import test2 def aFunction(): print "hi there" 测试2: import test aFunction() 这给了我一个名称错误,说我的函数没有定义。我也试过: from test import aFunction 以及: 我还尝试过在测试中不导入test2。我将从C++中来到Python,所以我担心我会对老式Python Primisher……明显地忽略一些明显的事情… > p>你正在创建一个循

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

测试:

import test2
def aFunction():
    print "hi there"
测试2:

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

from test import aFunction
以及:


我还尝试过在测试中不导入test2。我将从C++中来到Python,所以我担心我会对老式Python Primisher……明显地忽略一些明显的事情… > p>你正在创建一个循环导入。code>test.pyimports
test2.py
它尝试导入
test.py

不要这样做。当
test2
导入
test
时,该模块尚未完成所有代码的执行;功能尚未定义:

  • 编译并执行
    test
    ,并将空模块对象添加到
    sys.modules

  • 运行行
    import test2

    • 编译并执行
      test2
      ,并将空模块对象添加到
      sys.modules

    • 导入测试
      运行

      • test
        已作为模块存在于
        sys.modules
        中,此对象将返回并绑定到名称
        test
    • 下一行尝试运行
      test.affunction()
      测试中不存在此类名称。提出了一个例外

  • 定义
    def affunction()
    的行永远不会执行,因为引发了异常

删除
import test2
行,直接运行
test2.py
,导入函数将正常工作:

import test

test.aFunction()

您的
测试导入函数应该可以工作,您看到了什么错误?请注意,Python中还包含了一个,您可以将其导入。我在更大的项目中遇到了相同的错误,我创建测试文件只是为了显示我的问题。我收到错误“导入错误:无法导入名称'aFunction'”。+1很好地解释了导入的解决方法。昨天和我聊天的人(有着浓厚的Java背景)对python中导入的实际工作方式感到非常惊讶。正如您将看到的,我提到过我是用两种方法来实现的。@BraydonKains肯定发生了其他事情,因为按原样,这是有效的。@BraydonKains:确保模块位于同一目录中。也许可以将
test
重命名为其他名称。确保将
a功能作为全局导入,或通过模块引用该功能
from test import aFunction
将其绑定为全局文件。重命名该文件并使用“from afilename import aFunction”。然而,对于我需要这些信息的项目,我需要这些文件能够访问彼此的变量。“从文件名导入*”有效吗?
import test

test.aFunction()