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

雨点打透心脏的1/2处 2022-06-06 13:17 206阅读 0赞

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

#环境:3.6.2#

1 : ==,is的区别

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

20171109205136862

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

20171109205345272

2 :实现原理

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

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

3 - 对象缓存机制.

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

20171109213315566

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

20171109213337164

4 - 这就结束了?

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

-5 <= num <= 256.

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

20171109211617425

20171109211754154

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

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

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Talk Is Cheap ,Show Me The Code (一)

    写在前面 结束了在百度的实习,是时候写下校招的总结了,再不写估计很多东西都忘了。在开源社区混迹久了,从别人的学习、求职、工作经历中越发感受到很多的正能量,也本着攒RP的原则,向