在 Python 中,比较两个对象是否相等,可以用 “is” 和 “==” , is 与 == 的区别是什么呢,首先先清楚is 与 == 的概念

is 的概念:

比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址。

== 的概念:

比较的是两个对象的内容是否相等

为了更好的理解下面举个例子

小明和小王 2个人都上一年级,2人刚上学的时候领取的语文课本,无论外表,还是里面的章节都是一模一样,但是2人的书是不同的对象

这个时候我们可以使用is 比较, 如果使用== 比较的话,就是相同了

下面在写一个demo

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)  # 打印结果为False
print(a == b)  # 打印结果为True

这里a 就好比小明的语文课本, b 好比小王的语文课本 2个是不同的对象的,所以is 的时候返回的为False

is 比较的是内存地址,我们可以使用id()函数来打印下a 和 b 的内存地址

a = [1, 2, 3]
b = [1, 2, 3]
print(id(a))  # id 值为:1831201289280
print(id(b))  # id 值为:1831201289600
print(a is b)  # 打印结果为False
print(a == b)  # 打印结果为True

---------------------------------下面在补充一点-------------------------------

python 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而对于可变对象,则会重新开辟空间

所以当使用is 比较 2个int 类型或者float 类型返回结果为True 的时候不要在质疑我上面下的知识点了,

例如 在使用pycharm 工具 测试下面2个

a = 3.14
b = 3.14
print(a is b)  # 打印结果为True

或者

a = 500000
b = 500000
print(a is b)  # 打印结果为True

原因就是:python 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而对于可变对象,则会重新开辟空间

具体的我在is 与not is 里面写了,地址链接

python 中 is 与 == 的区别相关推荐

  1. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...

    python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...

  2. python中arg,*arg,**kwarg区别

    python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...

  3. Python中is和==的区别以及is None

    0 前言 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id( ...

  4. Python中“is”和“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还 ...

  5. pythonis啥意思-Python中is和==的区别

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...

  6. Python中is和==的区别

    在Python中一切都是对象. Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值).对象之间比较是否相等可以用==,也可以用is. is和==都是对 ...

  7. python中str和int区别_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval() ...

  8. python中sort和sorted区别_Python中的 sort 和 sorted的用法与区别

    今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...

  9. [转载] python中*args 和 **kwargs区别

    参考链接: 带有* args和** kwargs的Python中的可变长度参数 1 *args 和 **kwargs 定义. 你可以将不定数量的参数传递给一个函数.不定的意思是:预先并不知道, 函数使 ...

  10. python中*args 和 **kwargs区别

    1 *args 和 **kwargs 定义. 你可以将不定数量的参数传递给一个函数.不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字.其实并不是必须写成 ...

最新文章

  1. 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
  2. win7只能管理计算机软件吗,win7可以管理多少内存,win7内存优化软件
  3. php 取多级分类,php – 获取所有类别(多级)
  4. Servlet 工作原理解析--转载
  5. Vector 把一个vector追加到另一个vector
  6. java图片转换成base64_Java将图片转换成Base64字符串
  7. matlab lmi 定义一个任意方阵,matlab中LMI应用说明
  8. springboot整合mongodb changestream
  9. C#生成CHM文件(应用篇)之代码库编辑器(1)
  10. 孙鑫VC学习笔记:第二十讲 (一) Hook编程
  11. 论文阅读:Dual Reader-Parser on Hybrid Textual and Tabular Evidence for Open Domain Question Answering
  12. RGL: A Simple yet Effective Relation.. 文章详解
  13. 12306一直显示服务器忙,网购春运火车票首日 12306网站又现服务器忙
  14. 线性规划问题之案例1(奶制品的生产与销售)
  15. MySql高级索引、事务
  16. 书单来了!大厂的技术牛人在读什么:华为篇
  17. ionic自定义图标心得分享
  18. Excel 自动调整行高后增加高度
  19. Java-Map-详解
  20. 中国信息安全测评中心强硬发声,落实等保2.0制度

热门文章

  1. idea中如何打开RunDashboard窗口,微服务最实用设置
  2. 如何在本地访问远程服务器的jupyter notebook?
  3. 基类的析构函数为什么要设置成virtual
  4. python -m参数
  5. SpringBoot整合MyBatis详细教程~
  6. ML Pipelines管道
  7. TensorFlow编程结构
  8. 分离内核和虚拟机支持安全的关键任务边缘计算
  9. 客快物流大数据项目(十四):DockerFile介绍与构建过程解析
  10. 基于c语言优先级病房呼叫_C语言