知行编程网知行编程网  2022-12-20 12:00 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python运算符中如何选择is和==?的相关知识,包括python的逻辑运算符,以及python或运算这些编程知识,希望对大家有参考作用。

如何在python运算符中选择is和==?

我们要在数学上判断两个对象是否相等,可以使用=号。在python中,由于要比较的数据不一定是数值,所以我们的符号有is和==可供选择。所以在不同的条件下,选择is还是==是不一样的。下面我们来寻找一下is和==在恒等运算符中判断对象引用的区别,以帮助大家在使用恒等运算符时做出更好的选择。详细情况如下:

恒等运算符是用来判断两个变量是否指向同一个内存地址的运算符。

两个变量的值相等,不一定指的是同一个内存地址,但是如果两个变量指的是同一个内存地址,那么它们的值一定是相等的。



身份运算符说白了其实就是

is符号。它可以用来比较两个变量是否引用了同一个对象。

>>> a = 3
>>> id(a)
140602638349720
>>> hex(id(a)) # 还原成我们看着更顺眼的16进制,但是本文以10进制地址为主(因为懒)
'0x7fe09a503598'




顾名思义,

is是“相同”,而==是指两者之间的”相等“关系。所谓相同,比较的是两者之间的在内存中的位置,

>>> a = 3
>>> id(a)
140602638349720
>>> b = 3 # b指向的是和a指向的同一块地址(但是并不意味这改变了a,b也会相应改变)
>>> id(b)
140602638349720
>>> c = a # a的引用复制给c,在内存中其实是指向了用一个对象
>>> id(c)
140602638349720
>>> a is b
True
>>> a is c
True
>>> b is c
True




我们看到,上面

a,b,c的地址相同,所以他们互相之间”相同“



而相等则两者之间的数值对应相等

>>> a = 3
>>> b = a
>>> a = 4
>>> b
3
 
>>> a = [3]
>>> b = [3]
>>> id(a)
4351374184
>>> id(b)
4351374112
>>> a is b
False 
>>> a == b
True
>>> a[0] = 4
>>> b
[3]
 
>>> a = [3]
>>> b = a  # b就是a的引用,占得是同一块地址,而且当a的内容改变时,b也会随之改变,这和上面
# int对象不同,我也不知道为啥要这么搞。
>>> a[0] = 4 
>>> b
[4]

很多人看到这一定是乱七八糟的,其实这是一个原则,如果能用==就不用is了。除了一种情况,就是判断对象是否为None。

>>> if a is None:
...     pass

以上就是我们在探索python运算符时,在不同情况下选择is还是==。相信大家已经了解了两者的区别和用法。小编还是建议多用一点==。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享