我有一个文件,我们称之为One.py
:
from Two.py import example2
def example2():
print "something!"
和另一个名为Two.py
的文件:
def example1():
print "Other thing!"
example2()
但是,当我尝试拨打example2()
时,它在底线上无法识别它。我想避免简单地将One.py
导入Two.py
,因为这会创建一个导入循环。
答案 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
要导入。因此,编译器会发出警告,告诉您出了问题。