您误解了
is操作员的测试内容。它测试两个变量是否指向同一个对象,而不是两个变量具有相同的值。
从
is操作员文档中:
运算符is和is not对象标识测试:
x is y当且仅当
x和y是相同对象时,才为
true。
改用
==运算符:
print x == y
打印True。x和y是两个不同的列表:
x[0] = 4print(y) # prints [1, 2, 3]print(x == y) # prints False
如果使用该id()函数,您将看到x并y具有不同的标识符:
>>> id(x)4401064560>>> id(y)4401098192但是如果要分配给y,x则它们都指向同一个对象:>>> x = y>>> id(x)4401064560>>> id(y)4401064560>>> x is yTrue
并
is显示两者是同一个对象,则返回
True。
请记住,在Python中,名称仅仅是引用值的标签;您可以有多个名称指向同一个对象。
is告诉您两个名称是否指向一个相同的对象。
==告诉您两个名称是否引用具有相同值的对象。



