Python中运算符”==”和”is”的详解

前言

在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。

Python中比较两个对象是否相等,一共有两种方法,简单来说,它们的区别如下:

     is是比较两个引用是否指向了同一个对象(引用比较)。

     ==是比较两个对象是否相等。

>>> a = [1, 2, 3]>>> b = a>>> b is a # a的引用复制给b,他们在内存中其实是指向了用一个对象True >>> b == a # 当然,他们的值也是相等的True>>> b = a[:] # b通过a切片获得a的部分,这里的切片操作重新分配了对象,>>> b is a # 所以指向的不是同一个对象了False>>> b == a # 但他们的值还是相等的True

登录后复制

实现原理

is比较的是两者是否是同一个对象,所以比较的是内存地址(id是否相同)。

==是值比较。不可变对象,例如int,str,它会直接进行值比较。对于Python已知的对象,会调用他们的__eq__函数来比较。(其实已知的对象应该也是通过内置的__eq__函数来比较的)。对于自定义的对象,如果实现了__eq__函数,就会使用它比较,如果没有实现,效果和==是一样的。

立即学习“Python免费学习笔记(深入)”;

对象缓存机制

Python会对比较小的对象缓存,下次用到比较小的对象时,会去缓存区查找,如果找到,不会再开辟新的内存,而是继续把小对象的地址赋给新的值。例子:

>>> c = 1>>> d = 1>>> print(c is d) True >>> 1000 is 10**3False>>> 1000 == 10**3True

登录后复制

通过计算得到的赋值,不会使用缓存区。从第一个代码示例中可以看出。

对于字符串,你可以通过使用intern函数强制使用缓存区。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2282045.html

(0)
上一篇 2025年2月27日 19:09:09
下一篇 2025年2月27日 19:09:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 利用Python抓取行政区划码的方法

    前言 国家统计局网站上有相对比较齐的行政区划码,对于一些网站来说这是非常基础的数据,所以写了个Python程序将这部分数据抓取下来。 注意:抓取下来以后还要进行简单的人工的整理 示例代码: # -*- coding:utf-8 -*-”’…

    编程技术 2025年2月27日
    000
  • Python抓取手机号归属地信息示例代码

    前言 本文给大家介绍的是利用Python抓取手机归属地信息,文中给出了详细的示例代码,相信对大家的理解和学习很有帮助,以下为Python代码,较为简单,供参考。 示例代码 # -*- coding:utf-8 -*-import reque…

    编程技术 2025年2月27日
    200
  • Python文本相似性计算之编辑距离详解

    编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的…

    2025年2月27日 编程技术
    200
  • Python实现全角半角字符互转的方法

    前言 相信对于每一个编程人员来说,在文本处理的时候,经常会遇到全角半角不一致的问题。于是需要程序能够快速的在两者之间互转。由于全角半角本身存在着映射关系,所以处理起来并不复杂。 具体规则为:       全角字符unicode编码从6528…

    编程技术 2025年2月27日
    200
  • python字符串,数值计算

    Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Python 使用#进行单行注释,使用 '''…

    编程技术 2025年2月27日
    200
  • Python连接PostgreSQL数据库的方法

    前言 其实在Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2。psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用。 连接数据库: import p…

    编程技术 2025年2月27日
    200
  • Flask框架的学习指南之用户登录管理

    继续flask的学习之旅。今天介绍flask的登陆管理模块,还记得上一篇中的blog小项目么,登录是咱们自己写的验证代码,大概有以下几个步骤: 1、在登录框中输入用户名和密码 2、flask view函数获取用户密码,然后到数据库中查询该用…

    编程技术 2025年2月27日
    200
  • Python Paramiko模块的安装与使用详解

    一、前言 常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。而使用paramiko可以很好的解决以上问题,比起前面的方法,它…

    编程技术 2025年2月27日
    200
  • windows及linux环境下永久修改pip镜像源的方法

    一、在windows环境下修改pip镜像源的方法(以python3.5为例) (1):在windows文件管理器中,输入 %APPDATA% (2):会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.…

    2025年2月27日
    200
  • Flask框架的学习指南之开发环境搭建

    flask是一个使用 python 编写的轻量级 web 应用框架。其 wsgi 工具箱采用 werkzeug ,模板引擎则使用 jinja2。很多功能的实现都参考了django框架。由于项目需要,在此记录下学习的过程及心得。 工欲善其事,…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论