Python 中等于到底用 == 还是 is,两者究竟有什么区别?

在 Python 中,"等于"的含义可以有不同的解释,根据具体情况使用 == 或 is。它们有着不同的用途和含义:

== (等于运算符)

  • 用于比较两个对象的值是否相等。
  • 它会调用对象的 __eq__ 方法(如果定义了该方法)。
  • 适用于比较数字、字符串、列表等的内容是否相同。

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # 输出: True,因为 a 和 b 的内容相同

is (身份运算符)

  • 用于比较两个对象的身份是否相同,即比较两个对象在内存中的地址是否相同。
  • 只有在两个变量引用同一个对象时,is 才会返回 True。

a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is b)  # 输出: False,因为 a 和 b 是不同的对象,尽管它们的内容相同
print(a is c)  # 输出: True,因为 c 和 a 引用的是同一个对象

总结:

  • 使用 == 来检查两个对象的值是否相等。
  • 使用 is 来检查两个对象是否是同一个实例(即在内存中的地址是否相同)。

举例说明:

# 数字比较
x = 10
y = 10
print(x == y)  # 输出: True
print(x is y)  # 输出: True,因为 Python 会缓存小整数对象,x 和 y 实际上是同一个对象

# 字符串比较
a = "hello"
b = "hello"
print(a == b)  # 输出: True
print(a is b)  # 输出: True,因为短字符串会被缓存

# 列表比较
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2)  # 输出: True
print(list1 is list2)  # 输出: False,因为 list1 和 list2 是不同的对象

# None 比较
c = None
d = None
print(c == d)  # 输出: True
print(c is d)  # 输出: True,因为 None 是单例

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗者才子酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值