Python 无比较:应该使用“is”还是 ==?
在 Python 中,将变量与使用 == 时 None ,而使用 is 时不会发出警告。两种语法都有效,但通常首选使用 my_var is None。
为什么 None 检查首选“is”?
is 和 is 之间的主要区别==在于他们的目的。 == 检查相等性,而 is 检查对象同一性。在将变量与 None 进行比较的情况下,我们想要确定该变量是否是 None 对象,而不仅仅是一个与其等效的对象。
None 是 Python 中唯一的对象,这意味着只有其中一个例子。当您使用 my_var is None 时,您正在检查 my_var 和 None 是否是同一对象。此检查比使用 my_var == None 更具体、更可靠。
平等与身份
为了说明差异,请考虑自定义类 Negator:
如果创建 Negator 的实例并将其与 None 进行比较,您将得到:
thing == None 返回 True,因为 Negator 类覆盖了 eq 与除自身以外的任何其他值进行比较时始终返回 True 的方法。然而,thing is None 返回 False,因为这两个对象不是同一个对象。
结论
对于 None 检查,一般首选使用 my_var is None 来确保您专门检查 None 对象。当您想要检查相等性时可以使用 == ,但请记住,在处理重写比较方法的自定义类时,这可能不可靠。
以上是Python 无比较:您应该使用'is”还是'==”?的详细内容。更多信息请关注PHP中文网其他相关文章!