优秀的编程知识分享平台

网站首页 > 技术文章 正文

【学习】Python中is和==的运算符

nanyue 2025-02-15 00:27:18 技术文章 4 ℃

Python 中 is 和 == 都是用来比较两个对象的运算符,但是它们的比较内容不同:

  • is 是用来比较两个对象的 id 是否相等,也就是比较两个对象是否指向同一块内存地址。
  • == 是用来比较两个对象的值是否相等,也就是比较两个对象的内容是否一致。

例如,下面的代码中,a 和 b 都是列表类型,它们的值相等,但是它们的 id 不同,所以 a is b 返回 False,而 a == b 返回 True。

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # False
print(a == b) # True
print(id(a)) # 140506224299464
print(id(b)) # 140506224309576

Python 中有一种小整数对象池的机制,为了提高性能,会缓存一些常用的小整数对象,使得它们的 id 相同。所以,当 a 和 b 都是 [-5, 256] 范围内的整数时,a is b 和 a == b 都返回 True。但是当 a 和 b 超出这个范围时,a is b 就返回 False 了。

a = 100
b = 100
print(a is b) # True
print(a == b) # True
print(id(a)) # 14318944
print(id(b)) # 14318944

a = 1000
b = 1000
print(a is b) # False
print(a == b) # True
print(id(a)) # 140506208811952
print(id(b)) # 140506208812208
最近发表
标签列表