Python文档说"对于每个这样的变量,创建一个单元格对象来存储值;引用该值的每个堆栈帧的局部变量包含对也使用该变量的外部作用域的单元的引用。">
所以看起来cell对象存储了变量的值(就像存储了我假设的值的副本一样?)。
但是当我运行这个:
def func():
l = [1,2,3]
def g():
print(l)
return l,g
l,g = func()
l[0]=-1
g()
输出为:
[-1, 2, 3]
l
的变化确实影响存储在cell对象中的值。那么在我看来,存储在单元格中的东西就是参考。有人能解释一下吗?
在参考手册中,对象的值是可变对象本身,它由单元格唯一标识。它不是一个不可变的或抽象的值。此术语用于与引用形成对比,引用是在执行赋值、向函数传递参数等操作时复制的内容。