Python与not之间的区别!=

时间:2013-05-20 13:12:35

标签: python boolean-expression

我想知道这两段代码之间有什么区别:

while choice != "y" and choice != "n":
while not choice == "y" and not choice == "n":

1 个答案:

答案 0 :(得分:9)

第一个使用对象的__ne__方法,而第二个使用对象的__eq__方法并否定其结果。

虽然两种方法都应该对结果进行配对,因此a == b暗示not a != b这实际上并不是必需或强制执行的。

  

比较运营商之间没有隐含的关系。 x==y的真相并不意味着x!=y是错误的。因此,在定义__eq__()时,还应定义__ne__(),以便运算符按预期运行。

在你的情况下,choice是一个字符串(我猜?),它没有真正的区别。内置类型都确保==!=之间的反比关系。所以唯一的区别就是在查看代码时它是多么容易理解。我个人更喜欢更简洁的第一版。