Python 何时评估导入的文件?

标签 python import global

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

#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 的值可能会在导入设置后固定。我想知道我是否可以依赖这种行为。因此,我的问题也是,从导入文件的角度来看,导入文件中的值一般何时会被“更新”或“重新评估”?它在幕后是如何运作的?

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

最佳答案

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

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

关于Python 何时评估导入的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62312901/

相关文章:

python - 如何使用 jobs.create_or_update() 在 Azure ML SDK v2 中的管道中设置环境变量?

python - 无法用 pickle 序列化 pygame.Surface 对象

sql - postgres 抛出的 COPY FROM 中的语法错误

objective-c - 如果不在 Xcode 6 中导入 UIKit.h,就无法访​​问 UIImage 类吗?

java - 从全局变量中读取和写入

javascript - 将 eval() 与自定义全局变量一起使用

javascript - 当名称与 Node.js 中的参数名称相同时如何从函数访问全局变量?

python - 从数组中删除子数组

python - 单元测试实现 Python 属性

mysql - 将 WordPress 移至新主机 - 导入数据库错误 #1062