gpt4 book ai didi

python - 全局可变与不可变

转载 作者:行者123 更新时间:2023-12-02 16:51:34 27 4
gpt4 key购买 nike

以下是对可变对象和不可变对象(immutable对象)的 global 的正确理解吗?

immutable1 = 'abc'
immutable2 = '123'
mutable = {}

def change():
mutable['CHANGED'] = 'CHANGED' # this will change the global variable mutable
global immutable1
immutable1 = 'abc-CHANGED' # this will change the global variable immutable1 because global has been called
immutable2 = '123-CHANGED' # this will not change the global immutable2 variable, because it's immutable and global has not bee declared

global 的唯一用途是修改全局不可变变量,还是可以在其他情况下使用?

另一个例子:

>>> m={}
>>> i='a'
>>>
>>> def change():
... m['a'] = i
... i = 'b'
...
>>> print(m,i)
{} a
>>> change()
UnboundLocalError: local variable 'i' referenced before assignment

最佳答案

global 与可变性无关。它会更改名称范围,无论全局是指可变对象还是不可变对象(immutable对象),以便您可以为名称分配不同的值。

当分配给全局名称时,旧值可能可变也可能不可变,而新值也可以可变。

d = {}
e = 6

def change():
global d, e
d = 3
e = []

关于python - 全局可变与不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469239/

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