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中的is和==比较两个对象的两种方法相关推荐

  1. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  2. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  3. ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。

    题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...

  4. C语言习题:/*键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和,如果A和B都是奇数则输出两个数的差,如果A是奇数B是偶数则输出两数积,如果A是偶数B是奇数输出AVB结果*/

    #include<stdio.h> /*键盘输入两个非零整数A和B,如果A和B都是偶数则输出两个数的和, 如果A和B都是奇数则输出两个数的差, 如果A是奇数B是偶数则输出两数积, 如果A是 ...

  5. 在Action类中获得HttpServletResponse对象的四种方法

    Struts2:在Action类中获得HttpServletResponse对象的四种方法 在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和req ...

  6. python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...

    一.类的成员描述符(property) 类的成员描述符是为了在类中,对类的成员属性进行相关操作而创建的一种方式,大部分属于数据清洗 属性有三种操作:get获取属性值.set修改或添加属性.delete ...

  7. TIA博途S7-1200中实现高低字节或高低字调换的几种方法介绍

    TIA博途S7-1200中实现高低字节或高低字调换的几种方法介绍 例如S7-1200与某些上位机进行通信时,读写的浮点数的存储方式与上位机不同,即高低字或字节是相反的,此时读取的数据是不对的,需要将高 ...

  8. 《 Python List 列表全实例详解系列(九)》__列表反转(6种方法)

    < Python List 列表全实例详解系列(九)> __列表反转(6种方法) 本章目录: 十一.列表反转的6种方法 (11.1).通过列表的切片操作实现列表反转 (11.2).使用列表 ...

  9. 机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

    机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数) 转载于:https://blog.csdn.net/promisejia/article/details/80159619?ops_req ...

最新文章

  1. lingo 一些函数
  2. jae的mongo数据库管理工具(原创)
  3. oracle集群 节点切换不,Oracle 11gR2 RAC集群单节点关闭开启
  4. hdu 3068 最长回文(manacher算法)
  5. div加border样式
  6. 一场大火,让云计算巨头的数据中心化为灰烬!10 万Rust 游戏玩家的数据永久丢失,无法恢复
  7. 怎么做应力应变曲线_做了这么多年材料,这些力学性能测试你做对了吗?
  8. Spring Boot 中统一异常处理最佳实践介绍
  9. 宝塔面板安装MySQL数据库
  10. opencv学习十三:图像金字塔和图像梯度
  11. 2018中国软件和信息技术服务综合竞争力百强企业名单
  12. 最精彩的英语学习经验总结:俺的英语之路
  13. 计算机语言栏在哪里,win7语言栏不见了怎么办,教您win7系统语言栏不见了怎么办...
  14. Be yourself——《按自己的意愿过一生》读后感
  15. processon画类图和时序图
  16. 50行Python代码,一键获取微博热点!
  17. 使用奥维地图加载星图地球数据云地图数据
  18. 数据结构-树与二叉树-思维导图+小结
  19. HDU1248:寒冰王座(完全背包)
  20. JavaFX窗口最大化最小化事件

热门文章

  1. 基于matlab实现的人脸检测
  2. java 超时中断_JAVA 超时中断处理
  3. sqlserver模糊查询不用like_vlookup配合通配符,模糊查询也能很精确,再也不用筛选了...
  4. python flask web开发 可视化开发_python web开发之——Flask入门教程
  5. gdb 查看结构体地址内容_程序员的术与道:术——gdb基本操作
  6. JAVA程序设计计时器代码_Java中的定时器Timer使用示例代码详解
  7. java mp3数组_Java基础之数组(一)
  8. manjaro双系统 windows_Win10和Manjaro双系统安装记录
  9. 20220201--CTF刷题MISC方向--第5题
  10. 用c语言实现蚂蚁算法,rsa算法的c语言实现