前言:
此刻小伙伴们对“pythonis”大概比较关注,朋友们都想要了解一些“pythonis”的相关文章。那么小编同时在网上汇集了一些关于“pythonis””的相关知识,希望你们能喜欢,你们一起来了解一下吧!今天小编给大家介绍一下Python视频教程之is和= =的区别是什么?首先在Python中一切都是对象,Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。对象之间比较是否相等可以用= =,也可以用is。目前is和= =都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪?
似乎PYTHON在给不同的变量赋相同整数值小于等于256时,是用了同一个ID的。大于等于257的整数时,用的是不同的id,这时候就有区别了。
Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
is判断的是a对象是否就是b对象,是通过id来判断的
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
如下代码或许可以帮助你理解。
>>> a = 1
>>> b = 1.0
>>> a is b
False
>>> a == b
True
>>> id(a)
12777000
>>> id(b)
14986000
>>> a = 1
is比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。
= =比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法。
以下代码在Python3.5下测试通过。
= =比较操作符和is同一性运算符区别
= =是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b = = a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
is也被叫做同一性运算符,也就是id是否相同。看下面代码, a和b变量的id不同, 所以b==a是True, b is a 是False.
>>> id(a)
4364243328
>>>
>>> id(b)
4364202696
什么情况下is和==结果是完全相同的?
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>>
>>> a = 1000
>>> b = 10**3
>>> a = = b
True
>>> a is b
False
>>>
结论:数字类型不完全相同。
为什么256时相同, 而1000时不同?因为出于对性能的考虑,Python内部做了很多的优化工作,对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫small_ints的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。Python把这些可能频繁使用的整数对象规定在范围[-5, 256]之间的小对象放在small_ints中,但凡是需要用些小整数时,就从这里面取,不再去临时创建新的对象。
好了,以上就是小编给大家带来的全部内容,转发此文+关注 并私信小编“资料”即可免费领取2019最新python资料和零基础入门教程,不定期分享干货,欢迎初学和进阶中的小伙伴!
标签: #pythonis