gpt4 book ai didi

python - 导入变量初始化

转载 作者:行者123 更新时间:2023-11-28 21:51:10 28 4
gpt4 key购买 nike

我想知道为什么在 python (python 3.4) 中导入一个变量与导入一个模块然后引用有不同的结果,更重要的是为什么要进行深度复制 - 有没有办法绕过复制(而不是通过定义一个只返回它的函数)?

a.py

v = 1

def set():
global v
v = 3

主.py

import a
import b

a.set()
b.foo()

b.py

from  a import  v

def foo():
print(v)
print(a.v)
print(id(v))
print(id(a.v))

输出

1
3
1585041872
1585041904

最佳答案

问题是您正在修改标量值。这不是模块特有的问题,当简单地将变量传递给函数并在那里修改它时,它的工作原理是一样的。

1 是从a 句点导入的。无论您之后在 a 中做什么,都不会修改该值,因为它是一个简单的不可变标量值。

如果 a.v 是一个对象,对该对象的更改将传播到任何持有对它的引用的变量。

关于python - 导入变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758968/

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