将变量与 None 进行比较是 Python 中的常见操作。不过,您可能已经注意到所使用的语法存在差异,从而导致了使用“is”还是==的问题。
一般情况下,在将变量与 None 进行比较时,建议使用“is” 。原因是“is”检查对象身份,而 == 检查对象相等性。在 Python 中,只有一个 None 对象,因此使用“is”将任何内容与 None 进行比较,如果它们是同一对象,则始终返回 True。
另一方面,== 检查对象是否相等。这意味着如果两个对象相等,即使它们不是同一个对象,它也会返回 True。例如,请考虑以下代码:
class Negator(object): def __eq__(self, other): return not other thing = Negator() print(thing == None) # True print(thing is None) # False
在此示例中,Negator 类定义了一个 eq 方法,当对象不相等时该方法返回 True。当使用 == 将 thing 与 None 进行比较时,会调用自定义 eq 方法,结果为 True。然而,当使用 is 进行比较时,我们发现它们不是同一个对象,导致 False。
因此,如果你严格检查一个对象是否与 None 相同(即检查是否为 null),推荐使用“是”。但是,如果您要检查相等性(即检查两个对象是否具有相同的值),则应该使用 ==.
以上是Python 无比较:'是”还是==?的详细内容。更多信息请关注PHP中文网其他相关文章!