我决定了解Python数据模型和易变性的概念,在那之后,有一次测试让我的幸福崩溃了。
我完全同意这个例子:
x = ['1']
def func(a):
b = 'new value'
a.append(b)
func(x)
print(x) # expected ['1', 'new value']但是!这是怎么回事?
x = ['1']
def func(a):
b = 'new value'
a = b
print(a)
# expected 'new value'
# factual 'new value'
func(x)
print(x)
# expected 'new value'
# factual ['1'] !!!为什么x不等于‘新值’?
发布于 2020-06-08 18:03:45
在第一个示例中,x和a都指向相同的列表。因此,当您使用a引用将一个值附加到该列表时,您会在函数返回后看到这个副作用。
在第二个示例中,重新分配局部变量a以指向一个新值,但x仍然指向原始列表。函数返回后,a就会消失,但是x仍然指向列表。
https://stackoverflow.com/questions/62268336
复制相似问题