该
is
运营商不匹配变量的值,但这些实例本身。
到底是什么意思
我声明了两个变量,x
并y
在两个变量中分配了相同的值,但是当我使用is
运算符时,它返回false 。
我需要澄清。这是我的代码。
x = [1, 2, 3]
y = [1, 2, 3]
print(x is y) # It prints false!
您误解了is
操作员的测试内容。它测试两个变量是否指向同一个对象,而不是两个变量具有相同的值。
从is
操作员的文档中:
运算符
is
和is not
对象身份测试:x is y
当且仅当x
和y
是相同对象时,才为true 。
改用==
运算符:
print(x == y)
打印True
。x
并且y
是两个单独的列表:
x[0] = 4
print(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 y
True
并is
显示两者是同一个对象,则返回True
。
请记住,在Python中,名称只是引用值的标签;您可以有多个名称指向同一个对象。is
告诉您两个名称是否指向一个相同的对象。==
告诉您两个名称是否引用具有相同值的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句