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
的值。你可以相信它是你的新价值,除非你再次改变它。
希望问题措辞有意义。我想要做的是更改文件中平面变量的值,并让导入该文件的文件看到更新后的值。看来我可以做到这一点。例如:
#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
的值。你可以相信它是你的新价值,除非你再次改变它。