我看到一篇关于不可变对象(immutable对象)的文章。
它说什么时候:
变量 = 不可变
将不可变分配给变量。
例如
a = b # b 是不可变的
它说在这种情况下 a 指的是 b 的副本,而不是 reference to b。 如果 b 是 可变的,则 a 将是 对 b 的引用
所以:
a = 10
b = a
a =20
print (b) #b still is 10
但在这种情况下:
a = 10
b = 10
a is b # return True
print id(10)
print id(a)
print id(b) # id(a) == id(b) == id(10)
如果a是10的副本,b也是10的副本,为什么id(a) == id(b) == id(10)?
请您参考如下方法:
“简单”不可变文字(特别是 -1 到 255 之间的整数)是内部,这意味着即使绑定(bind)到不同的名称,它们仍然是同一个对象。
>>> a = 'foo'
>>> b = 'foo'
>>> a is b
True
