Python中的is和==比较两个对象的两种方法


Posted in Python onSeptember 06, 2017

Python中的is和==比较两个对象的两种方法

在Python中有两种方式比较两个对象是否相等,分别是is和==,两者之间是不同的

  • ==比较的是值(如同java中的equals方法)
  • is比较的是引用(可以看作比较内存地址, 类似于java中的==)

对于:

>>> n = 1
>>> n is 1
True
>>> b = '1'
>>> b is 1
False
>>> n == b
False

由于1和'1'不管在值上面还是在引用上面都不同,所以结果都为false

对于:

>>> n = 1
>>> n is 1
True

这里有一个知识点,简单来说,对于整形这种primitive type,引用比较就是值比较,然而,Python在实现整型中采用了这种方式,对于位于-5到256之间的数字,在内存中保留数组存储这些数字,下次使用时候直接引用。而在此范围外的数字,则会新建int对象

举个简单的example,如下代码所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>> a is b
False

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> a is b
True

如上例子所示,只要是在-5~256之间的整形,python不会给变量初始化新的内存空间,但是一旦超出256,则会分配新的空间。

通过打印两个对象的id也可以直接的看出两个对象内存地址的区别,如下所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>>
>>>
>>> id(a)
140638347685960
>>> id(b)
140638347686008

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> id(a)
140638347656864
>>> id(b)
140638347656864

以上就是Python is和==的对比的详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python、Javascript中的闭包比较
Feb 04 Python
python将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
Python反射的用法实例分析
Feb 11 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
Oct 31 Python
python实现求特征选择的信息增益
Dec 18 Python
对Python w和w+权限的区别详解
Jan 23 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python修改列表值问题解决方案
Mar 06 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
Python中表示字符串的三种方法
Sep 06 #Python
通过Python实现自动填写调查问卷
Sep 06 #Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 #Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 #Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 #Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 #Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 #Python
You might like
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
phpwind放自动注册方法
2006/12/02 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
python将ip地址转换成整数的方法
2015/03/17 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
python解析xml简单示例
2019/06/21 Python
Python编程中类与类的关系详解
2019/08/08 Python
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
网络维护管理员的自我评价分享
2013/11/11 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
产品质量保证书范本
2015/02/27 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server