了解Python的“ is”运算符

aniskhan001:

is运营商不匹配变量的值,但这些实例本身。

到底是什么意思

我声明了两个变量,xy在两个变量中分配了相同的值,但是当我使用is运算符时,它返回false

我需要澄清。这是我的代码。

x = [1, 2, 3]
y = [1, 2, 3]

print(x is y)  # It prints false!
马丁·彼得斯(Martijn Pieters):

您误解了is操作员的测试内容。它测试两个变量是否指向同一个对象,而不是两个变量具有相同的值。

is操作员的文档中

运算符isis not对象身份测试:x is y当且仅当xy是相同对象时,才为true

改用==运算符:

print(x == y)

打印Truex并且y是两个单独的列表:

x[0] = 4
print(y)  # prints [1, 2, 3]
print(x == y)   # prints False

如果使用该id()函数,您将看到xy具有不同的标识符:

>>> id(x)
4401064560
>>> id(y)
4401098192

但是如果要分配给yx则它们都指向同一个对象:

>>> x = y
>>> id(x)
4401064560
>>> id(y)
4401064560
>>> x is y
True

is显示两者是同一个对象,则返回True

请记住,在Python中,名称只是引用值的标签您可以有多个名称指向同一个对象。is告诉您两个名称是否指向一个相同的对象。==告诉您两个名称是否引用具有相同值的对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章