我有一个烧瓶应用程序,我已将代码拆分为多个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导入而不是另一个模块?