在Main文件中导入两个模块,然后彼此调用方法

时间:2019-05-24 01:49:43

标签: python

我是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)允许您这样做。在研究过程中,我对此一无所获。-

3 个答案:

答案 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魔法来做到这一点是可能的,但我不建议这样做。