在python中各个符号含义的汇总(详解Python中is和==的区别)
在python中各个符号含义的汇总
详解Python中is和==的区别在Python中一切都是对象。
Python中对象包含的三个基本要素,分别是:
- id(身份标识)
- type(数据类型)
- value(值)
对象之间比较是否相等可以用 == ,也可以用 is 。
is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪?
is 比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。
== 比较的是两个对象的内容是否相等,默认会调用对象的 __eq__ 方法。
== 是python标准操作符中的比较操作符,用来比较判断两个对象的值是否相等。
先来看一个例子
|
>>> 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:
|
>>> 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 中,但凡是需要用些小整数时,就从这里面取,不再去临时创建新的对象。
|
>>> c = 'miracle.young' >>> d = 'miracle.young' >>> c is d False >>> c = = d True >>> c = 'miracleyoung' >>> d = 'miracleyoung' >>> c is c True >>> c = = d True |
所以字符串类型不完全相同,这个和解释器实现有关。
|
>>> a = ( 1 , 2 , 3 ) # a和b为元组类型 >>> b = ( 1 , 2 , 3 ) >>> a is b False >>> a = [ 1 , 2 , 3 ] # a和b为list类型 >>> b = [ 1 , 2 , 3 ] >>> a is b False >>> a = { 'miracle' : 100 , 'young' : 1 } # a和b为dict类型 >>> b = { 'miracle' : 100 , 'young' : 1 } >>> a is b False >>> a = set ([ 1 , 2 , 3 ]) # a和b为set类型 >>> b = set ([ 1 , 2 , 3 ]) >>> a is b False |
所以当变量是数字、字符串、元组,列表,字典时,is 和 == 都不相同, 不能互换使用!当比较值时,要使用 ==,比较是否是同一个内存地址时应该使用is。
当然,开发中比较值的情况比较多。
以上所述是小编给大家介绍的Python中is和==的区别详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/moonhmily/p/10567354.html
- python爬虫面试经历(搞定这套Python爬虫面试题面试会so easy)
- python调用elasticsearch(Python-ElasticSearch搜索查询的讲解)
- python中生成字符串序列(python实现字符串加密 生成唯一固定长度字符串)
- python怎样看字符unicode编码(Python3中编码与解码之Unicode与bytes的讲解)
- python中的eval函数的用法(Python eval的常见错误封装及利用原理详解)
- python抖音视频收集(python制作抖音代码舞)
- python3.8爬虫需要的包(python爬取基于m3u8协议的ts文件并合并)
- python6个基础数据类型(计算机二级python学习教程3 python语言基本数据类型)
- python可视化界面实现管理系统(python面向对象实现名片管理系统文件版)
- python简易版学生管理系统(python3.6实现学生信息管理系统)
- python如何用md5作为文档名(Python生成MD5值的两种方法实例分析)
- 怎样在python中散点图(python使用Plotly绘图工具绘制散点图、线形图)
- python创建字典的代码(Python创建字典的八种方式)
- thinkphp实战教程之博客技术学习(python3编写ThinkPHP命令执行Getshell的方法)
- linux切换python版本(linux安装python修改默认python版本方法)
- python实现螺旋矩阵(Python3实现的旋转矩阵图像算法示例)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
- 宋轶除了演过于曼丽,原来还演过一个青楼女子(宋轶除了演过于曼丽)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9