代码之家  ›  专栏  ›  技术社区  ›  Pelicer

在主文件中导入两个模块,并相互调用其中的方法

  •  0
  • Pelicer  · 技术社区  · 5 年前

    我是Python新手,但到目前为止,我知道在某些语言中,您可以“不受阻碍地”导入一个模块,并查看在该模块之后将要导入的模块的内容。

    例如,这些模块:

    主.py

    例1.py

    例2.p

    在它们里面我有

    例1.py

    def Test1():
        print('this is a test')
    

    def Test2():
        Test1()
        print('this is another test')
    

    主.py

    from Ex1 import Test1
    from Ex2 import Test2
    
    Test2()
    

    在python中,这会给我一个错误 Test1() 在Ex2中未定义。但自从我进口 Test1 之前 Test2 然后从Main.py中的Test2调用一个方法(这两个函数都是导入的),这不应该被允许吗?我不知道有没有办法,但是有些语言,比如AutoIt,允许你这么做。我在研究过程中没有发现这一点-

    3 回复  |  直到 5 年前
        1
  •  0
  •   gmds    5 年前

    不,因为Python是如何解析名称的。

    Ex2 ,在运行时, Test2 会寻找 Test1 在自己的范围内 ;换句话说,对于具有名称的函数 Ex2.Test1 . 这可以通过 from Ex1 import Test1 陈述。

    相反,在 main ,当您执行 从Ex1导入测试1 ,函数的名称现在是 main.Test1 ,它与 测试2 正在寻找。

    它是 可能的 用一些来做 sys.modules 魔法,但我不推荐。

        2
  •  0
  •   Apoorv Goyal    5 年前

    首先,应该是 ex1 在python文件中,这样模块的名称就正确了。

    第二,进口 ex2 在里面 例1 . 这应该能起到作用。

        3
  •  0
  •   Liam Clarke    5 年前

    Python不是这样工作的,它隔离模块名称空间以防止可怕的错误。