gpt4 book ai didi

python - 导入模块中的可变对象

转载 作者:行者123 更新时间:2023-11-28 23:04:42 24 4
gpt4 key购买 nike

我读到导入模块的可变对象并就地更改它们也会影响原始导入模块的对象。例如:

from mymod import x
x[0]=1001

所以当我这样做时:

import mymod
print(mymod.x)

打印 [1001,43,bla]。我的问题是,就地更改是否会影响模块的编译字节码、模块的源代码(不太可能,不是吗?)或我导入的 namespace ?所以如果我更改类似的内容,稍后导入在其他地方使用相同的模块并尝试访问可变对象,我会得到什么?干杯。

最佳答案

不,它没有。当您稍后导入该模块时(或者如果另一个脚本在您的程序仍在运行的同时导入该模块),您将获得该模块的自己的“干净”副本。

因此,如果 test.py 包含单行 x = [1,2,3],您将得到:

>>> from test import x
>>> x[0] = 1001
>>> x
[1001, 2, 3]
>>> import test
>>> test.x
[1001, 2, 3]
>>> imp.reload(test)
<module 'test' from 'test.py'>
>>> test.x # test is rebound to a new object
[1, 2, 3]
>>> x # the old local variable isn't affected, of course
[1001, 2, 3]

关于python - 导入模块中的可变对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397574/

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