这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战
比较与身份运算符有哪些
说到比较运算符就是我们上小学时候学的比大小。
身份运算符就是Python中检查变量地址的一种方法,通过身份运算符比较两个变量是否出自一个变量之家,通俗的来讲就是比较ID函数返回的内存编号是不是相同。
| 运算符 | 描述 | 举例 |
|---|---|---|
| == | 判断是否等于 | a == b |
| ! = | 判断是否不等于 | a != b |
| 判断是否大于 | a > b | |
| < | 判断是否小于 | a < b |
| >= | 判断是否大于等于 | a >= b |
| <= | 判断是否小于等于 | a<= b |
| <> | 判断是否不等于 | a<> b |
| is | 判断两个对象存储单元是否相同 | a is b |
| is not | 判断两个对象存储单元是否不同 | a is not b |
<>在Python3中已经弃用了现在仅仅能在Python2中使用
# coding:utf-8
a = 1
b = 2.2
c = 0
d = 18
d_01 = 18
e = -3
f = 300
f_01 = 300
print(a == b)
print(a != b)
print(a < b)
print(a > e)
print(d >= b)
print(d >= d_01)
print(d == d_01)
print(d is d_01)
print('d id is',id(d))
print('d_01 id is',id(d_01))
print(f == f_01)
print(f is f_01)
打印结果:
在这里我们会发现我们明明只定义了两个变量但是他们的id却是一样的 在这里我们做一个实验:
>>> a = 300
>>> b = 300
>>> a is b
False
>>> a = 18
>>> b = 18
>>> a is b
True
在Python原生解释器中会将0
255提前定义到内存中所以在0255这个数字范围内我们定义的变量都会直接从已经定义好的内存地址中直接去拿,但是超过255之后我们刚才定义的300就不在一开始定义好的范围内就会是false了,但当我们定义了这么一个f=300之后如果定义了相同的变量那么变量会直接指向之前我们定义的f=300的内存地址
总结
- 在Python中0~255提前定义到了内存中
- 在Python原生编译器中如果我们定义一个大于255的变量那么后续定义相同值的变量不会指向之前我们定义的内存地址