在python中,是';foo==(8或9)和#x27;或';foo==8或foo==9';更正确?

在python中,是';foo==(8或9)和#x27;或';foo==8或foo==9';更正确?,python,python-2.7,if-statement,boolean,Python,Python 2.7,If Statement,Boolean,在用python编程时,当您检查语句是否为true时,使用foo==(8或9)或foo==8或foo==9是否更正确?这只是程序员选择做什么的问题吗?我想知道python 2.7,以防它与python 3不同。您可能想要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:

在用python编程时,当您检查语句是否为true时,使用
foo==(8或9)
foo==8或foo==9是否更正确?这只是程序员选择做什么的问题吗?我想知道python 2.7,以防它与python 3不同。

您可能想要
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。

foo==(8或9)
foo==8或foo==9不同,后者是正确的形式


(8或9)
计算为
8
,因为在Python中
计算为第一个操作数(从左到右)即“truthy”,或
False
,如果两者都不是,则检查变为普通的
foo==8
foo==(8或9)
不是您可能认为的那样。显然,您不了解“or”运算符是如何工作的。任何非零整数在逻辑上都为真。然后…有意思,我不知道。谢谢