admin管理员组

文章数量:1487745

python全栈开发《14.比较与身份运算符》

说到比较运算符,其实就是我们上小学的时候学的比大小。它包括==,!=,>,<,>=,<=。这些都是对于两个数字进行比大小的方法。

身份运算符:其实就是python中检查变量地址的一种方法。通过身份运算符比较两个变量是否出自一个变量之家。

通俗来说就是比较id函数返回的内存编号是不是相同。宏观的对比较运算符和身份运算符做一个简单的介绍。

比较运算符

==:也支持数字的比较,判断是否相等。字符串、列表、元组、字典都可以通过双等号来判断是否相等。

身份运算符

身份运算符其实就是判断两个变量的内存住址是否相同。如果地址相同,就认为这两个变量是相同的, 它们是一家人。

单元存储就是我们提过的内存块(内存地址)。以上所有的比较,返回的都是布尔类型。

代码语言:javascript代码运行次数:0运行复制
# 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)

运行结果:

代码语言:javascript代码运行次数:0运行复制
/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,这个变量拥有了之前相同的变量的值,所以它会直接从已有的内存地址里拿过来。等于说借人家的用一用。这就是在脚本中它相等,但是在解释器下不相等的原因。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-07-14,如有侵权请联系 cloudcommunity@tencent 删除全栈python变量开发内存

本文标签: python全栈开发《14比较与身份运算符》