2022年 11月 3日

Python中的比较运算符

比较与身份运算符有哪些

说到比较运算符就是我们上小学时候学的比大小。

身份运算符就是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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

打印结果:

在这里我们会发现我们明明只定义了两个变量但是他们的id却是一样的
在这里我们做一个实验:

>>> a = 300
>>> b = 300
>>> a is b
False
>>> a = 18
>>> b = 18
>>> a is b
True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在Python原生解释器中会将0255提前定义到内存中所以在0255这个数字范围内我们定义的变量都会直接从已经定义好的内存地址中直接去拿,但是超过255之后我们刚才定义的300就不在一开始定义好的范围内就会是false了,但当我们定义了这么一个f=300之后如果定义了相同的变量那么变量会直接指向之前我们定义的f=300的内存地址

总结

  • 在Python中0~255提前定义到了内存中
  • 在Python原生编译器中如果我们定义一个大于255的变量那么后续定义相同值的变量不会指向之前我们定义的内存地址