首页 >后端开发 >Python教程 >Python None 比较:什么时候应该使用'is”与'==”?

Python None 比较:什么时候应该使用'is”与'==”?

Susan Sarandon
Susan Sarandon原创
2024-11-11 14:01:03789浏览

Python None Comparison: When Should I Use

Python None 比较:何时使用“is”与 ==

在 Python 中使用 None 值时,开发人员经常使用两个“是”和“==”进行比较。虽然这两种方法在语法上都是有效的,但建议的选择取决于比较的预期目的。

通常,在检查对象身份时首选“is”,这意味着两个变量是否引用内存中完全相同的对象。相反,“==”检查相等性,这可能因对象的实现而异。

考虑以下自定义类,它重写 eq 方法来定义与对象标识不同的等价性:

class Negator(object):
    def __eq__(self,other):
        return not other

thing = Negator()
print(thing == None)    # True
print(thing is None)    # False

在此示例中,“==”返回 True,因为 Negator 的 eq 方法会覆盖默认行为。然而,“is”返回 False,因为这两个变量并不引用同一个对象。

在处理对象标识不重要的自定义类时,“==”是检查相等性的适当选择。例如,如果你想比较两个列表的内容,你可以使用“==”:

lst = [1,2,3]
lst == lst[:]  # This is True since the lists are "equivalent"
lst is lst[:]  # This is False since they're actually different objects

相反,如果你想专门检查两个变量是否指向完全相同的对象内存中,“is”是首选比较运算符。当使用可变对象(例如字典或列表)时,这一点尤其重要,如果它们是同一对象,则更改一个实例可能会影响另一个实例:

a = [1, 2, 3]
b = a
b.append(4)
print(a, b)  # Output: [1, 2, 3, 4], [1, 2, 3, 4]

c = [1, 2, 3]
d = c
d is c  # True (same object in memory)

以上是Python None 比较:什么时候应该使用'is”与'==”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn