首页 > 编程语言 >Python中is和==的区别有多大,你知道吗?

Python中is和==的区别有多大,你知道吗?

时间:2024-04-02 18:44:06浏览次数:28  
标签:set False 区别 Python 运算符 hogwarts True id 知道

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

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

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

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

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

Exmp1:

>>> a = 'hogwarts'
>>> b = 'hogwarts'
>>> a == b
True

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

Exmp2:

>>> x = y = [3,6,9]
>>> z = [3,6,9]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print (id(x))
1970475782664
>>> print (id(y))
1970475782664
>>> print (id(z))
1978925995016

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

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

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

Exmp3:

>>> a = 1 #a和b为数值类型
>>> b = 1
>>> a is b
True
>>> id(a)
14318944
>>> id(b)
14318944
>>> a = 'hogwarts' #a和b为字符串类型
>>> b = 'hogwarts'
>>> a is b
True
>>> id(a)
1516172820848
>>> id(b)
1516172820848
>>> a = (3,6,9) #a和b为元组类型
>>> b = (3,6,9)
>>> a is b
False
>>> id(a)
3047713878888
>>> id(b)
1852930077464
>>> a = [1,2,3] #a和b为list类型
>>> b = [1,2,3]
>>> a is b
False
>>> id(a)
2536812401160
>>> id(b)
2536812401672
>>> a = {'cheese':1,'zh':2} #a和b为dict类型
>>> b = {'cheese':1,'zh':2}
>>> a is b
False
>>> id(a)
42101616
>>> id(b)
42098736
>>> a = set([1,2,3])#a和b为set类型
>>> b = set([1,2,3])
>>> a is b
False
>>> id(a)
14819976
>>> id(b)
14822256

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

标签:set,False,区别,Python,运算符,hogwarts,True,id,知道
From: https://www.cnblogs.com/hogwarts/p/18111277

相关文章

  • java,postgresql,python中各种数据类型的占位长度,取值范围
    Java数据类型Java中的数据类型分为两类:基本数据类型和引用数据类型。基本数据类型数据类型占位长度取值范围byte1字节-128127short2字节-3276832767int4字节-21474836482147483647long8字节-92233720368547758089223372036854775807float4字节1.4E-453.4028235E38double8字节4.......
  • python改变字幕时间线
    #处理小时,和分钟字母串defmyHandle(she):kaishi_shi=sheiflen(str(kaishi_shi))<2:kaishi_shi_str="0%s"%str(kaishi_shi)else:kaishi_shi_str=str(kaishi_shi)print(kaishi_shi_str)returnkaishi_shi_str#处理......
  • JS- 构造函数调用与常规函数和方法调用的主要区别
    构造函数调用与常规函数和方法调用的主要区别:特征构造函数调用常规函数和方法调用调用方式使用new关键字直接调用函数名或通过对象调用方法参数处理构造函数可以接受任意数量和类型的参数,并且通过this来引用它们函数和方法可以接受任意数量和类型的参数this的值新创建......
  • python改变文件修改时间
    代码:importosimporttime,datetimedefchange_file_time(file_path,new_timestamp):#使用stat函数获取文件的状态file_stat=os.stat(file_path)#更新文件的访问时间和修改时间os.utime(file_path,(file_stat.st_atime,new_timestamp))......
  • 氟碳喷涂和与粉末喷涂的区别,PVDF氟碳涂覆技术具体是什么
    静电喷涂分:粉沫喷涂和氟碳喷涂,粉沫喷涂的原料为:聚氨脂、聚氨树脂、环氧树脂、羟基聚脂树脂以及环氧/聚酯树脂,可配制多种颜色。粉沫喷涂的特点:喷涂设备有手工的,有自动吊挂式、施工简单、涂层厚度为30微米以上,抗冲击,耐磨擦,防腐蚀,耐候性等均好,涂料价格比氟碳便宜。粉沫喷涂最大弱点......
  • 氟碳漆与氟碳喷涂有什么区别和不同之处
    首先,氟碳漆与氟碳喷涂两者根本不是一个概念,氟碳漆是一种常温自干性的油漆,适用于外墙铝板、钢结构的防腐涂装,是目前综合性能最出色的涂料之一,而氟碳喷涂则是一种静电喷涂,属于高档次喷涂,因此价格较高。氟碳喷涂具有优异的抗褪色性、抗起霜性、抗大气污染(酸雨等)的腐蚀性,抗紫外线能......
  • Python加载C语言动态库
    ★背景说明1.python是一门胶水语言,可以通过加载动态库的方式在一个项目中运行不同语言的程序2.通过动态库加载其他语言的方式可以解决多线程GIL使用C解释器无法并发运行的问题★在Linux中运行C代码:编辑C语言代码//hello.c//c代码作为启动文件必须加include<stdio......
  • python selenium 速查笔记
    1.安装与配置pipinstallselenium基本使用selenium都是为了动态加载网页内容用于爬虫,所以一般也会用到phantomjsmac下如果要配置phantomjs环境的话echo$PATHln-s<phantomjs地址><PATH中任一路径>至于chromeDriver,配置方法类似,下载地址:https://sites.google.com/a/chro......
  • python基础——基础代码每日复习
    '''字符串的格式化方法一,示例'''name="张三"money=102desc="今天收到{}的学费{}元"string=desc.format(name,money)print(string)#今天收到张三的学费102元'''字符串的格式化方法一,示例'''str='今天在{}......
  • systemctl控制python脚本开机自启
    一次搞定Linuxsystemd服务脚本-知乎(zhihu.com)#service文件目录/etc/systemd/system/mantis-stat.service#文件内容Description=mantis-statAfter=network.target[Service]Type=forkingUser=rootGroup=rootWorkingDirectory=/root/daizc/mantis-stat-master......