Python中is和==有何区别?Python中is和==的区别介绍

本篇文章给大家带来的内容是关于python中is和==有何区别?python中is和==的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么。

在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。

==比较操作符和is同一性运算符区别

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

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:

例1.

>>> a = 'cheesezh'>>> b = 'cheesezh'>>> a == bTrue

登录后复制

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个list间的比较,你就会明白is同一性运算符的工作原理:

>>> x = y = [4,5,6]>>> z = [4,5,6]>>> x == yTrue>>> x == zTrue>>> x is yTrue>>> x is zFalse>>>>>> print id(x)3075326572>>> print id(y)3075326572>>> print id(z)3075328140

登录后复制

前三个例子都是True,这什么最后一个是False呢?x、y和z的值是相同的,所以前两个是True没有问题。至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。

下面再来看一个例子,例3中同一类型下的a和b的(a==b)都是为True,而(a is b)则不然。

>>> a = 1 #a和b为数值类型>>> b = 1>>> a is bTrue>>> id(a)14318944>>> id(b)14318944>>> a = 'cheesezh' #a和b为字符串类型>>> b = 'cheesezh'>>> a is bTrue>>> id(a)42111872>>> id(b)42111872>>> a = (1,2,3) #a和b为元组类型>>> b = (1,2,3)>>> a is bFalse>>> id(a)15001280>>> id(b)14790408>>> a = [1,2,3] #a和b为list类型>>> b = [1,2,3]>>> a is bFalse>>> id(a)42091624>>> id(b)42082016>>> a = {'cheese':1,'zh':2} #a和b为dict类型>>> b = {'cheese':1,'zh':2}>>> a is bFalse>>> id(a)42101616>>> id(b)42098736>>> a = set([1,2,3])#a和b为set类型>>> b = set([1,2,3])>>> a is bFalse>>> id(a)14819976>>> id(b)14822256

登录后复制

通过例3可看出,只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False。

大家自己试试看a=257,b=257时它们的id还是否会相等。事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了,同样的道理,字符串对象也有一个类似的缓冲池,超过区间范围内自然不会相等了。 

总的来说,只有数值型和字符串型,并且在通用对象池中的情况下,a is b才为True,否则当a和b是int,str,tuple,list,dict或set型时,a is b均为False。

以上就是Python中is和==有何区别?Python中is和==的区别介绍的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年2月27日 05:26:36
下一篇 2025年2月24日 09:03:39

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

相关推荐

  • 浅谈有关python的面向对象编程(代码示例)

    本篇文章给大家带来的内容是浅谈有关python的面向对象编程(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 一、第一个案例—创建类 #__author:”吉”#date: 2018/10/27 0…

    编程技术 2025年2月27日
    200
  • python中文件操作的相关内容总结(附示例)

    本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文…

    编程技术 2025年2月27日
    200
  • python什么是递归?两种优先搜索算法的实现 (代码示例)

     本篇文章给大家带来的内容是介绍python什么是递归?两种优先搜索算法的实现 (代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。  一、递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递…

    2025年2月27日 编程技术
    200
  • 浅谈python学习之字符编码与字符串

    本篇文章给大家带来的内容是浅谈python学习之字符编码与字符串。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 字符编码是什么? 例如汉字“中”,可以用以下表示 十进制:20013 二进制:01001110 001011…

    编程技术 2025年2月27日
    200
  • python中numpy的array数据类型有哪些?(代码详解)

    本篇文章给大家带来的内容是介绍python中numpy的array数据类型有哪些?(代码详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 import numpy as np#创建# 创建一维数组a = np.arr…

    编程技术 2025年2月27日
    200
  • python数据竖着怎么变横的?

    python数据竖着变横的的方法:使用zip()函数,类似矩阵转置的过程,将竖状数据变为横状数据;语法“zip([iterable, …])”。该函数将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 pytho…

    2025年2月27日
    200
  • python tuple有什么用

    Python中tuple(元组)的作用:作为参数传递给函数调用、或是从函数调用那里获得参数时,保护其内容不被外部接口修改。通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。 Python是一种计算机程序语…

    2025年2月27日 编程技术
    200
  • 初学python看什么书?

    初学python可以看:《Python编程:入门到实践》、《Python基础教程》、《笨办法学Python》、《Python语言及其应用》、《Python编程入门》、《父与子的编程之旅:与小卡特一起学Python 》等等。 Python入门…

    2025年2月27日 编程技术
    200
  • python能做回归么

    Python可以实现线性回归,实现方法:1、在scikit-learn库中调用linear_model来拟合数据;2、使用Scipy.polyfit()或者numpy.polyfit();3、使用高度专业化的线性回归函数Stats.linr…

    2025年2月27日
    200
  • python 的& 表示什么

    python代码里经常会需要用到各种各样的运算符,这里我将要和大家介绍的是python中的&,想知道他是什么意思吗?那就和小编一起来了解一下吧。 &是位运算符-与,类似的还有|(或),!(非)。 整数在计算机中用二进制的位来…

    2025年2月27日
    200

发表回复

登录后才能评论