从要导入的模块中获取变量

时间:2018-10-22 12:13:58

标签: python

主要:

import fileb
favouritePizza = "pineapple"
fileb.eatPizza

fileb:

from main import favouritePizza
def eatPizza():
    print("favouritePizza")

这是我尝试过的方法,但是没有这样的属性。我查看了其他问题,但这些问题无济于事。

1 个答案:

答案 0 :(得分:2)

这是循环依赖的经典示例。 main导入fileb,而fileb需要main

即使从理论上讲,您的案件也很难(不可能?)解决。实际上,python导入机制所做的事情甚至比预期的要少-每次从某个模块导入任何内容时,都会读取整个模块并将其导入到全局(每个进程)模块名称空间中。实际上,from module import function只是语法糖,它使您能够不乱用特定模块(from module import *)中的所有内容来填充名称空间,但在幕后,它几乎与import module; module.function(...)相同

从构成/体系结构的角度来看,基本程序结构为:

  • 顶部模块导入底部
  • 底部模块在被调用时从顶部获取参数

您可能想以某种方式在favouritePizza中使用fileb变量,即在eatPizza函数中。好的事情是使该函数接受参数,该参数将从使用该参数的任何地方传递:

# fileb.py
def eatPizza(name):
    print(name)

并用

调用
# main.py
import fileb
favouritePizza = "pineapple"
fileb.eatPizza(favouritePizza)