为了账号安全,请及时绑定邮箱和手机立即绑定

理解Python的“is”操作符

理解Python的“is”操作符

拉丁的传说 2019-06-14 16:52:16
理解Python的“is”操作符这个is运算符不匹配变量的值,而匹配实例本身。这到底是什么意思?我声明了两个名为x和y在两个变量中分配相同的值,但当我使用is接线员。我需要澄清。这是我的密码。x = [1, 2, 3]y = [1, 2, 3]print x is y #It prints false!
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

你误会了is操作员测试。它测试两个变量是否指向同一对象,如果两个变量具有相同的值,则不会。

的文档中,is操作者:

操作者isis not测试对象标识:x is y当且仅当xy是同一个对象。

使用==运算符:

print x == y

这个指纹Truexy是两个分开清单:

x[0] = 4print(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 yTrue

is显示这两个对象都是相同的对象,它将返回True.

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


查看完整回答
反对 回复 2019-06-14
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

is只有当它们实际上是同一个对象时才返回true。如果他们是一样的,一个改变也会出现在另一个。这是区别的一个例子。

>>> x = [1, 2, 3]>>> y = [1, 2, 3]>>> print x is yFalse>>> z = y>>> print y is zTrue>>> print x is zFalse>>> y[0] = 5>>> print z[5, 2, 3]


查看完整回答
反对 回复 2019-06-14
  • 2 回答
  • 0 关注
  • 755 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信