13

我今天在编写一些 Python 时意识到可以将不等式运算符编写为a!=bor not a==b。这让我很好奇:

  1. 两种方式的行为是否完全相同,或者是否存在一些细微的差异?
  2. 有什么理由使用其中一个吗?一种比另一种更常用吗?
4

2 回答 2

21
  1. ==调用__eq__(). 如果存在则!=调用,否则等价于.__ne__()not ==
  2. 除非 1 的差异很重要。
于 2012-05-03T04:12:24.213 回答
10

注意你的括号。

>>> not "test" == True
True
>>> not "test" and True
False

==优先于not. 但是notand具有相同的优先级,所以

Python 运算符优先级

于 2012-05-03T04:16:14.443 回答