在Python中,'foo == 8或9'或'foo == 8或foo == 9'哪个更正确?

3
在Python编程中,当您检查语句是否为真时,使用foo == (8 or 9)还是foo == 8 or foo == 9更正确?这只是程序员选择的问题吗?我想知道Python 2.7是否与Python 3不同。

1
两者并不等价... foo == (8 or 9) 不是你想象中的样子。 - Jeff Mercado
显然,你不理解“或”运算符的工作原理。任何非零整数在逻辑上都是TRUE。那么... - B.Mr.W.
2个回答

13

你可能想要 foo == 8 或者 foo == 9,因为:

In [411]: foo = 9

In [412]: foo == (8 or 9)
Out[412]: False

In [413]: foo == 8 or foo == 9
Out[413]: True

毕竟,(8或9)等于8

In [414]: (8 or 9)
Out[414]: 8

或者,您也可以编写

foo in (8, 9)

这同样适用于Python3和Python2。


有趣,我不知道那个。谢谢! - lobuo

2

foo == (8 or 9) 不等同于 foo == 8 or foo == 9,后者是正确的形式。

在Python中,(8 or 9) 的值为8,因为or操作符会从左至右依次计算每个操作数,返回第一个“真值”,如果没有真值,则返回False。所以这个检查就变成了普通的 foo == 8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接