python操作符 is,== 详解 (Trust Me)

#内容:python操作符==,is区别与详解#

#环境:3.6.2#


1 : ==,is的区别

简单来说,' == ' :判断两个对象的值(value)是否相等; ‘ is ’ 判断两个对象的引用(id)是否相同. 示例:


显而易见,a与b的引用不同,a与c的引用相同,如果这不够直观,我们可以id()下,如下:


2 :实现原理

( 1 ) : == 是值比较,不可变对象(str,int,float..)会直接进行值比较,可变对象(list,dict..)会调用它们的__eq__函数来比较,自定义对象,若实现了__eq__函数,就会使用它比较,反之,==比较.

( 2 ) : is是引用比较,判断两个对象的指针指值是否相同.


3 - 对象缓存机制.

python会对较小的object缓存(例如数值对象),下次用到较小的对象时,会去缓存区查找,若找到,不会开辟新内存,将;若找不到,开辟新内存.例如下面这个例子.


而对于字符串对象,is判断,无论何时,返回True.



4 - 这就结束了?

不知道有没有人对3中的较小对象提出疑问,怎样才算是小? 10?-1?-100? 其实,python3中对数值做了范围:

-5 <= num <= 256.

超过该范围的任何数据(哪怕时万分之一),is操作都会返回False,如下:


而在这个范围内的所有数值型对象is操作都会返回True.


小结:== 和 is抓住其主要区别就可以正确操作,希望能给每一个奋斗的你带来些许帮助.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值