说到比较运算符,其实就是我们上小学的时候学的比大小。它包括==,!=,>,<,>=,<=。这些都是对于两个数字进行比大小的方法。
身份运算符:其实就是python中检查变量地址的一种方法。通过身份运算符比较两个变量是否出自一个变量之家。
通俗来说就是比较id函数返回的内存编号是不是相同。宏观的对比较运算符和身份运算符做一个简单的介绍。
==:也支持数字的比较,判断是否相等。字符串、列表、元组、字典都可以通过双等号来判断是否相等。
身份运算符其实就是判断两个变量的内存住址是否相同。如果地址相同,就认为这两个变量是相同的, 它们是一家人。
单元存储就是我们提过的内存块(内存地址)。以上所有的比较,返回的都是布尔类型。
# 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)
print(f is d)
print(id(f))
print(id(d))
print(f is not d)
运行结果:
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/compare.py
False
True
True
True
True
True
True
True
d id is: 4388053808
d_01 id is: 4388053808
True
True
False
4378638288
4388053808
True
进程已结束,退出代码为 0
在python解释器里,刚才在Terminal里输入了python,打开了python原生的python解释器。在这里边判断的时候,python会把0-255的数字,提前定义到内存中。
所以在0-255数字范围内,定义的变量都会直接从已经定义好的内存地址中直接去拿。但是了超过了255之后,刚才定义的300,就不在一开始定义好的范围内了。所以就是false了。
为什么在脚本中定义的f和f_01都是300,已经超过了255,还是true呢?
因为当我们定义了f等于300的时候,这个300已经被定义在了内存里。
所以再去定义一个新的变量f_01,这个变量拥有了之前相同的变量的值,所以它会直接从已有的内存地址里拿过来。等于说借人家的用一用。这就是在脚本中它相等,但是在解释器下不相等的原因。