gpt4 book ai didi

python - 在什么时候更改文件会改变执行结果?

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:33 25 4
gpt4 key购买 nike

假设我有一个模块 foo.py,其中包含一些代码,以及一个脚本 main.py,其中包含 foo 并执行python -m main.

在什么时候更改 foo 的代码会影响 python -m main 的结果?

具体来说,调用 import 是否会“卡住”文件,因为更改它不会影响将来的执行?

main.py 示例:

input()
import foo
input()
import foo
print(foo.f())

什么情况下模块文件的修改会影响执行结果?

我的问题与以下内容相关:

如果我有一个受版本控制的代码并运行它,并 checkout 不同的分支,则如果延迟调用某些 import (例如,在避免调用的函数上),则来自不同分支的代码将运行循环依赖)。这是真的吗?

最佳答案

来自 documentation :

A module can contain executable statements as well as function definitions. These statements are intended to initialize the module. They are executed only the first time the module name is encountered in an import statement.

因此,一旦模块被导入一次,更改磁盘上的模块将不会产生任何影响。您可以自己看到这一点:有一个文件 foo.py 在导入时打印“foo”:

print("foo")

和一个多次导入foo的文件main.py:

import foo
import foo
import foo

并且可以看到,当运行main.py时,输出只有一个foo,因此foo.py只运行一次.

(请注意,有一个函数 importlib.reload 尝试重新加载模块,但不能保证替换对旧模块的所有引用。)

关于您的编辑,是的,这是正确的。

关于python - 在什么时候更改文件会改变执行结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com