Python 什么时候评估导入的文件?

Python when are imported files evaluated?

希望问题措辞有意义。我想要做的是更改文件中平面变量的值,并让导入该文件的文件看到更新后的值。看来我可以做到这一点。例如:

#settings.py
VARIABLE = 1
def change_variable():
    global VARIABLE
    VARIABLE = 2

#main.py
import settings
print(settings.VARIABLE)
settings.change_variable()
print(settings.VARIABLE)

输出:

1
2

随意。虽然我有点惊讶,因为我认为 settings.VARIABLE 的值可能会在导入设置后得到修复。我想知道我是否可以依赖这种行为。因此,我的问题也是,从导入文件的角度来看,导入文件的值一般何时会是 "updated" 或 "re-evaluated"?它在幕后是如何运作的?

我当然可以做一个 class。但我不喜欢将设置或任何配置作为对象的想法。我更喜欢它平坦。但我想要在导入后根据用户 cli 输入更改设置的选项。

导入文件 settings.py 后,python 就完成了对文件的查看。它现在有一个模块加载到内存中,如果它被导入到其他地方,该模块将被加载到那里。第一次导入后就再也不会查看该文件。

您的函数更改了该模块中 VARIABLE 的值。你可以相信它是你的新价值,除非你再次改变它。