关于 Python 的 is和 ==,解释一下下面程序的结果
762
等3人参与

题目描述

>>> a = 100
>>> b = 100
>>> a == b
True
>>> a is b
True
>>> c = 1000
>>> d = 1000
>>> c == d
True
>>> c is d
False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
代码块
复制 预览
复制成功!
代码块
复制 预览
复制成功!

关键提炼

  1. is 和 == 的作用是什么?
  2. 它们有什么区别?
  3. 分别被用在什么样的场景下最合适?

Tips:Python 为了实现内存的有效利用,会对 [-5,256] 区间内的整数进行缓存,超出这个范围则不会缓存。

我的作业
去发布

登录后即可发布作业,立即

全部作业

== 是比较两个对象的内容是否相等,即两个对象的“值”是否相等,不管两者在内存中的引用地址是否一样。

is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。即is比较两个条件:1.内容相同。2.内存中地址相同

首先是第一个和第二个示例中的结果不同。 显示不同结果的原因是Python存储了一个介于-5到256之间的整数的数组列表,每个整数具有固定的标识。当我们在此范围内分配整数变量时,Python会将此变量的标识分配为数组列表内整数的整数。 结果,对于第一个示例,由于a和b的标识都是从数组列表中获得的,因此它们的标识当然是相同的,因此 “a is b” 为True。
但是一旦该变量的值超出该范围,由于 Python 内部没有具有该值的对象,因此Python将为此变量创建一个新的标识并将该值分配给该变量。 如前所述,身份对于每个创建都是唯一的,因此,即使两个变量的值相同,其身份也永远不会相等。 这就是为什么“a is b”在第二个例子结果为False。

0
评论
提交于  2022-08-06 10:45:50

登录后即可查看更多作业,立即

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号