比较运算符为 | 给出不同的值& 与 and 或 - Python

Comparison operators give different values for | & compared to and or - Python

我对比较运算符感到困惑。例如,

 10 or 20 == 20
 # output, expected True
 10

  10 | 20 == 20
 (10 | 20) == 20
 (10 or 20) == 20

所有 3 行代码都给出 'False',但我期望 'True'。

 10 or 20 == 20
 # output gives 10, but was expecting True
 10

另一个例子:

 10 and 20 > 2
 # output is as expected
 True

 (10 and 20) > 2
 True

 (10 & 20) > 2
 # output gives False, but was expecting True
 False

最后,如果我这样做:

 10 or 20 > 100
 #output is 10. No idea why
 10
 3 or 8 < 200
 3

任何人都可以帮助消除这种困惑吗?非常感谢您花时间阅读我的困惑!我正在使用 Python 3.6

这两个条件运算符都会 return 他们必须评估的最后一个条件或值。

or 运算符评估这些条件中的任何一个是否为真,return 它评估的最后一个条件。由于 10 在 Python(或与此相关的任何其他语言)中被视为 True,因此该语言甚至不会通过第二个条件(或值)而只是 return 第一个值。而在 and 的情况下,两个条件都必须为真,如果两个都为真,则第二个值将被 return 编辑,否则将是第一个值。

>>> True or False
True
>>> False or True
True
>>> True and False
False

# Similarly
>>> 10 or 20
10
>>> 10 and 20
20
>>> 0 or 10
10
>>> 0 and 10
0

此行为还为某些 b = a if a else c 种行为提供了方便的替代方法。

它类似于判断真假的情况:

>>> 20 or 10
20
>>>(20 or 10) == 10 
False
>>>(20 or 10) == 20
True

这是因为它将第一个值设为真,将下一个值设为假,当您传递真值或假值时,您会得到真值,同样您会得到 20,这实际上代表此处的真值。 希望这可以帮助。