
在 Python 一一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is。==和is操作的差别是:
- is比较的昵嘟个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址。
- ==比较的昵嘟个对象的内容是否相等,默认会调用对象的__eq__()办法。
清跋扈is和==的差别之后,对此也许你有可能会碰到下面的┞封些困惑,于是就有了如许一篇文┞仿,试图把Python一一些隐晦的器械趴出来,欲望对你有必定的赞助。我们先来看两段代码:
片段一:
片段二:
- >>> a = 256
- >>> b = 256
- >>> a is b
- True
- >>>
在交互式敕令行履行膳绫擎两段代码,代码片段一中的a==b返回True很好懂得,因为两个对象的值都是256,对傍友段二,a is b也返回True,这解释a和b是指向同一个对象的,可以检查一下他们的id值是否相等:
- >>> id(a)
- 8213296
- >>> id(b)
- 8213296
- >>>
结不雅证实他俩切实其实是同一个对象,指向的是同一个内存地址。那是不是所有的┞符数对象只要两个对象的值(内容)相等,它们就是同一个实例对象呢?换句话说,对于整数对象只要==返回True,is操作也会返回True吗?带着这个问题来看下面这两段代码:
片段一:
- >>> a = 256
- >>> b = 256
- >>> a == b
- True
- >>>
- >>> a = 257
- >>> b = 257
- >>> a == b
- True
- >>>
片段二:
- >>> a = 257
- >>> b = 257
- >>> a is b
- False
- >>>
对于257,a is b返回的竟然是False,结不雅可能在你的料想之中,也有可能出乎你的料想,但不管怎么,我们照样要刨根问底,找出问题的┞锋相。
解惑一
弄明白第一个问题后,我们持续在Python交互式敕令行中写一个函数,再来看下面这段代码:
片段一:
- >>> c = 257
- >>> def foo():
- ... a = 257
- ... b = 257
- ... print a is b
- ... print a is c
- ...
推荐阅读
今朝,互联网+政务办事已经进入深水区,下一步推动的重点是什么?我们若何来推动政务办事聪明化?面对政务办事的新需求,IT企业应当若何来供给更好的办事?日前,在中国登科太极信息家当园召>>>详细阅读
本文标题:Python解惑:整数比较
地址:http://www.17bianji.com/lsqh/36162.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示