【发布时间】:2019-12-09 11:20:04
【问题描述】:
我有以下代码:
a = []
b = a
当我编译以下代码时,我得到了这个:
print(b is a) --> True
print(b is []) --> False
如果 b = a 那么b is [] 不应该返回True?
【问题讨论】:
-
is表示引用相等,因此两个事物都引用相同对象,两个单独的列表不相同对象。跨度> -
不,一点也不。平等不是身份
-
一个字面量是产生一个新对象还是引用一个现有对象基本上是一个实现细节。不要将
is与文字一起使用。 -
我应该说,对于 immutable 值,它是一个实现细节。对于可变值,缓存一个值会导致问题。
-
并非所有
[]都是同一个对象。[]只是一个空列表,可以通过多种方式构造。