6

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

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

1 回答 1

10

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

虽然这两种方法都应该将它们的结果配对,所以这a == b意味着not a != b这实际上不是必需的或强制的。

比较运算符之间没有隐含的关系。的真理x==y并不意味着它x!=y是错误的。因此,在定义 时__eq__(),还应该定义__ne__()操作符的行为与预期一致。

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

于 2013-05-20T13:19:26.043 回答