Python3学习笔记之is == in操作符解析

本文介绍了Python3中的'is'、'=='和'in'操作符。'is'用于检查两个对象是否为同一个实例,比较内存地址;'in'用于判断元素是否存在于集合中。'is'在与单例值比较时效率较高,常用于判断None。Python存在常量池,对[-5, 256]范围内的整数和某些字符串进行缓冲,相同值的对象可能指向同一实例。" 104261061,7390722,定点数与浮点数详解,"['计算机', '计算机组成原理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

is, in与==

意义

  • ==比较的是两个对象的值是否相等,比较常用
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)       #True
  • is比较的是两个对象是不是同一个实例对象,它们的内存地址是否相同
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)       #False
b = a
print(a is b)       #True
  • in是判断是否包含,即判断一个集合(如list、tuple)是否包含这个元素,a in aFalse是因为[1, 2, 3]这个列表并不在[1, 2, 3]这个列表中,[1, 2, 3]这个列表包含的元素只有1, 2, 3
a = [1, 2, 3]
print(1 in a)       #True
print(a in a)       #False

注意点

  • 通常我们见到的都是==而很少见到is,那么什么时候使用is呢?当在变量和单例值之间比较时,用is 的效率更高。目前最常使用is 的地方是判断对象是否为Noneis的效率更高是因为它不能进行函数重载,不用进行特殊的函数调用,直接比较两个对象的id;而==则调用了对象的__eq__()方法,继承自object的对象的__eq__()方法直接比较两个对象的id,这结果与is一样,但大多数时候继承object的类会覆盖__eq__()方法,因此比较的就是对象的值了,效率也降低了。
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a))        #139889039143432
print(id(b))        #139889039117576
print(a is b)       #False
print(a == b)       #True
  • python中有常量池,会把常用的整数对象和字符串对象都缓冲起来,在此范围内的对象如果值相同,指向的都会是同一个对象。
a = 21
b = 21
print(a is b)       #True
a = "python3.7"
b = "python3.7"
print(a is b)       #True
  • 对于整数,python全局解释器仅对[-5, 256]范围内的整数进行了缓冲,超过此范围的整数得到的结果依然会是False。但这仅是在命令行中执行得到的结果,如果在Pycharm或保存为文件执行,就没有这个范围的限制,因为解释器做了一部分优化
命令行
>>> a = -6
>>> b = -6
>>> a is b
False
>>> a = 257
>>> b = 257
>>> a is b
False

保存为文件执行
a = -6
b = -6
print(a is b)       #True
a = 257
b = 257
print(a is b)       #True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值