《Python语言程序设计》 —2.3.7 身份运算符

举报
华章计算机 发表于 2019/11/18 19:50:55 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第2章,第2.3.7节,作者是王恺 王志 李涛 朱洪文。

2.3.7 身份运算符

身份运算用于比较两个对象是否对应同样的存储单元,Python的身份运算符如表2-8

所示。

表2-8 身份运算符

image.png 

提示 程序在运行时,输入数据和输出数据都存放在内存中。内存中的一个存储单元可以存储一个字节的数据,每个存储单元都有一个唯一的编号,称为内存地址。根据数据类型不同,其所占用的内存大小也不同。一个数据通常会占据内存中连续多个存储单元,起始存储单元的地址称为该数据的内存首地址。利用id函数可以查看一个数据的内存首地址。

x is y等价于id(x)==id(y),即判断x和y的内存首地址是否相同;x is not y等价于id(x)!=id(y),即判断x和y的内存首地址是否不相同。

这里通过代码清单2-7理解身份运算符的作用和使用方法。

代码清单2-7 身份运算符使用示例

1    x,y=15,15

2    print(x is y) #输出True

3    print(x is not y) #输出False

4    print(x is 15) #输出True

5    x,y=[1,2,3],[1,2,3]

6    print(x is y) #输出False

7    print(x==y) #输出True

8    print(x is [1,2,3]) #输出False

9    x=y

10   print(x is y) #输出True

执行完毕后,第2~4、6~8、10行代码分别按对应注释中的描述输出结果,从中可以得到以下信息:

根据第2~4行的输出结果,对于数值类型的数据,无论是常量还是变量,只要其值相同,就对应同样的存储单元。

从第6~8行的输出结果可以看到,对于列表类型的数据,无论是常量还是变量,虽然其值相同,但对应的存储单元不同,因此,第6行和第8行中的is运算都会返回False。而“==”运算只是单纯进行值的比较,只要值相等就会返回True(如第7行代码)。

如果赋值运算符“=”的右操作数也是一个变量,则赋值运算后左操作数变量和右操作数变量会对应同样的存储单元(如第10行代码)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。