如何在不再运行文件的情况下使用另一个导入包中的变量

时间:2018-05-27 00:35:27

标签: python python-3.6

我有一个烧瓶应用程序,我已将代码拆分为多个python文件,每个文件专用于整个程序的特定部分(db,login,admin等)。大多数文件都有某种设置代码,可以创建各自的模块对象,这些对象必须能够访问我的主文件中定义的Flask对象。有些模块还需要访问其他模块中的变量,但是在导入它们时,它们会再次运行,即使它们已经在main中导入了。

以下代码是问题的一个示例。

如果我有像这样的main.py

import foo
import bar
if __name__ == "__main__":
    foo.foofunc()

foo.py

import bar
@bar.barable
def foo(string):
    print(string)

和bar.py

import foo
foo.foo("hello")
def barable(fun):
    def r(*args, **kwargs):
        print("this function is completely unbarable")
        func(*args, **kwargs)

这段代码不起作用,因为foo导入了bar,导入了foo,它运行了bar.barable,但尚未定义。

在这种情况下(假设需要调用foo.foo),我唯一的选择是将bar.barable从bar中提取出来并进入一个单独的模块,还是有其他方法可以解决这个问题?

我知道在python中导入模块会运行该文件,但是有一些方法可以将一些代码放入与__name__ == "__main__"相同的检查中,但要检查它是否由main导入而不是另一个模块?

0 个答案:

没有答案