我是Python的新手,但到目前为止,我知道在某些语言中,您可以“ Inderectly”导入模块,并查看将在该模块之后导入的模块的内容。
例如,这些模块:
main.py
ex1.py
ex2.p
我有他们
Ex1.py
def Test1():
print('this is a test')
Ex2.py
def Test2():
Test1()
print('this is another test')
Main.py
from Ex1 import Test1
from Ex2 import Test2
Test2()
在python中,这将引发我一个错误,指出在Ex2中未定义Test1()
。但是,由于我在Test1
之前导入了Test2
,然后从Main.py(同时导入了两个函数)的Test2中调用了一个方法,所以不应该这样做吗?我不知道是否有办法做到这一点,但是某些语言(例如AutoIt)允许您这样做。在研究过程中,我对此一无所获。-
答案 0 :(得分:0)
首先,它应该是ex1
并且在您的python文件中,以便模块的名称正确。
第二,在ex2
中导入ex1
。这应该可以解决问题。
答案 1 :(得分:0)
Python不能那样工作,它隔离模块名称空间以防止可怕的错误。
答案 2 :(得分:0)
否,因为Python如何解析名称。
在Ex2
中,运行时Test2
将在其自身范围内寻找Test1
;换句话说,对于名称为Ex2.Test1
的函数。这可以通过from Ex1 import Test1
语句来实现。
反之,在main
中,当您执行from Ex1 import Test1
时,函数的名称现在为main.Test1
,与Test2
的函数名称不匹配寻找。
用一些sys.modules
魔法来做到这一点是可能的,但我不建议这样做。