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

时间:2015-05-04 23:04:59

标签: python function import

我有一个文件,我们称之为One.py

from Two.py import example2

def example2():
   print "something!"

和另一个名为Two.py的文件:

def example1():
   print "Other thing!"
   example2()

但是,当我尝试拨打example2()时,它在底线上无法识别它。我想避免简单地将One.py导入Two.py,因为这会创建一个导入循环。

2 个答案:

答案 0 :(得分:0)

首先,只需命名模块即可导入,文件不会结束:

from Two import example2

这应该可怕地失败,因为example2

中没有Two.py的定义

一个简单的例子来做我想你想要的东西:

One.py

def function1():
    print 'I am function 1'

Two.py

from One import function1
def function2():
    print 'I am function 2'
function1()
function2()

答案 1 :(得分:0)

正如评论所述,您的代码没有多大意义。我们来看看你的Two.py文件:

#Two.py
def example1():
print "Other thing!"
example2()

该文件包含名为example1的函数的定义,该函数打印字符串。执行时,example2()永远不会被调用,因为example2()从未在任何地方被声明。如果在本地声明它,则需要在Two.py中添加定义它的函数。例如,将以下代码行附加到Two.py文件:

def example2():
    print "Example 2 was called"

现在,当您尝试调用该函数时,编译器将知道您希望它做什么,因为您在本地声明了它。另一方面,如果您没有在同一文件中声明该函数但在其他位置已将其定义,则可以从另一个文件导入该函数。由于One.py具有example2()的定义,因此您可以导入Two.py中的模块以获取对该模块的访问权限。您的最后两个文件应如下所示:

#Two.py
from One.py import example2  #instead of importing it from elsewhere, you can also define it in the actual file
def example1():
    print "Other thing!"     #notice the indentation that you left out
example1()
example2()

#One.py
def example2():
    print "something!"

这将毫无错误地执行。

要了解您的实现出了什么问题,请考虑以下代码行:

from Two.py import example2

以上说明有一些名为Two.py的文件,它包含一个名为example2的函数的定义。但是,如果您仔细查看Two.py文件,则可以看到没有example2要导入。因此,编译器会发出警告,告诉您出了问题。