《Python语言程序设计》 —2.3.7 身份运算符
2.3.7 身份运算符
身份运算用于比较两个对象是否对应同样的存储单元,Python的身份运算符如表2-8
所示。
表2-8 身份运算符
提示 程序在运行时,输入数据和输出数据都存放在内存中。内存中的一个存储单元可以存储一个字节的数据,每个存储单元都有一个唯一的编号,称为内存地址。根据数据类型不同,其所占用的内存大小也不同。一个数据通常会占据内存中连续多个存储单元,起始存储单元的地址称为该数据的内存首地址。利用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行代码)。
- 点赞
- 收藏
- 关注作者
评论(0)