Python教程:第21篇 身份运算符

liftword2周前 (06-20)技术文章4

身份运算符可以说是Python七类运算符中最简单的一类了,相比其他六种运算符(赋值、算术、逻辑、比较、成员、位),它也是最容易被人忽略遗忘的那个。

身份运算符功能

身份运算符的功能是判断两个对象是否同一个,就像在现实生活中判断两个名字是否是同一个人一样,比如你可能听说过“安吉拉北鼻(Angelababy)”和“杨天宝”,她们都是指教主夫人。这便是身份运算符之所以叫身份的原因——每一个对象(比如现实中的人)都有唯一的一个身份。

身份运算符有哪些

在Python中,身份运算符与成员运算符最为相似,也只有两个,一个是is,一个与is组合的is not,注意,是is not,而不是not is,这点与成员运算符的not in顺序不一样。

成员运算符没有in not的用法,下面Python3.10.4的运行效果显示出这种用法是错误的:

而身份运算符没有not is的用法:

身份运算符运算规则

和成员运算符相似的是,对于相同的操作数,is与is not的返回值相反,这是可以理解的,因为它们本来就是互逆的一对运算,它们的运算规则如下表所示:

运算符使用格式

运算结果

张三 is 李四

如果张三就是李四,结果为True,不是就为False

王二 is not 麻子

如果王二不是麻子,结果为True,是就为False

什么是同一个对象

在现实生活中,判断是否是同一个人是很简单的,因为每个人都有一个唯一的身份证。你不会因为马一龙长得很像马斯克,或者By2的孙涵孙雨是双胞胎就把他(她)们当作同一个人。

同理,也不能因为两个变量的值相同,就认为它们是同一对象:

注:上面是Python3.10.4的实际运行情况,对于不同的数据赋值运算的规则有所不同,见文末。

在Python中,判断两个变量是否是同一个对象的依据是:引用的数据是不是在内存中具有相同的地址

id函数可以返回变量在内存中的地址,下面的示例能够让大家理解什么才是同一个对象。在下面的第一个示例中,张三和李四的值不同,其内存地址不同,张三不是李四,是很好理解的;在第2个示例中,李四重新赋值与张三一样的值(张三还是原值),虽然值相同,但内存地址不同,所以张三依然不是李四;在最后一个例子中,将张三赋传值给王二,王二则指向了张三在内存中同一个数据,所以这里王二就是张三。

如何判断两个变量的值是否相同

相比要判断两个变量是否引用的是同一对象,判断两个对象的值是否相同是更常用的功能(这也是身份运算符不受重视的原因,它的应用场景比其他运算符要小),可以使用等于比较运算符==来判断两个变量的值是否相同:

Python对不同数据的赋值规则

对于一些很简单的数据,Python会在内存中只保留一份数据,多个变量赋值相同时都会指向这个数据。这一点与一般人认为的较大的数据只保留一份的做法正好相反。下面是两个变量赋值1的示例,可以看到内存地址相同:

下面是简单的英文字符串:

但是较大的数字有所不同:

对于汉字就像对待长数字一样,但是它对于有些英文解析就很令人费解(第一个例子中的英文长度比第三个例子中的要长,但是最长的反而和上述示例中较短的一样):

这一点Python2与Python3没有版本差异,以下是Python2.7.16运行结果:

结语

关于身份运算符的内容就到此结束吧。关于赋值运算符的原理我现在也不太理解,太过高深的东西很难找到资料,这些教程的很多东西都是我自己领悟的。有时自己会有灵光闪现,能想到一些与众不同的东西,不过灵感这种东西也是可遇不可求,如果以后明白了,会在以后教程中写出,因为怕到时时间过了太久,文章早已过了可修改期。以前的很多文章也有一些不足之处,但是不能修改了。有时修改比发布还难通过审核,所以就算了,人生总有遗憾,有时不完美才更显真实。

感谢阅读,下期再见。

相关内容

Python教程:第17篇 比较运算符

Python教程:第18篇 算术运算符

Python教程:第19篇 逻辑运算符

Python教程:第20篇 成员运算符

#python#

相关文章

Python 运算符详解

Python 运算符详解在 Python 中,运算符是执行操作的符号。它们可以用于执行数学运算、逻辑运算、位操作等任务。运算符可以根据其功能分为多个类别。1. 算术运算符算术运算符用于基本的数学计算,...

Python运算符:数学助手,轻松拿咧

Python中的运算符就像是生活中的数学助手,帮助我们快速准确地完成这些计算。比如购物时计算总价、做家务时分配任务等。这篇文章就来详细聊聊Python中的各种运算符,并通过实际代码示例帮助你更好地理解...

第二章:Python 运算符与表达式

2.1 算术运算符2.1.1 理论知识算术运算符用于执行基本的数学运算,Python 提供了以下几种算术运算符:加(+):用于将两个数值相加。减(-):从第一个数中减去第二个数。乘(*):将两个数相乘...

Python运算符详解与示例

为了执行各操作python中有很多种运算符,来吧道友一块看看有哪些?1. 算术运算符用于基本的数学运算。运算符描述示例结果+加法5 + 38-减法5 - 32*乘法5 * 315/除法5 / 22.5...

基础语法篇:算术运算符和赋值运算符 含完整示例源码

下面以实例的形式演示一下算术运算符及赋值运算符的基本使用:首先打开PyCharm编辑器,新建一个名为“算术运算符和赋值运算符.py”的文件一、算术运算符常用的算术运算符包括加(+)、减(-)、乘(*)...

二、Python运算符

Python中的运算符分类算术运算符关系运算符赋值运算符逻辑运算符位运算符成员运算符1.算术运算符算术运算符主要有加(+),减(-),乘(*),除(/),取模(%),幂(**),取整除(//) 等运算...