OR运算符比较None和bool

pca*_*lho 1 python

我在我的一个函数中发现了一个特定的错误,其中按位比较OR的args顺序似乎很重要:

In: None or False
Out: False

In: False or None
Out: None
Run Code Online (Sandbox Code Playgroud)

使用Python 2.7.2和IPython 0.10.2进行了检查.

我可以确保,如果一个元素为None,确保他是比较的第一个arg,就像这样

if a==None:
    a or b
else:
    b or a
Run Code Online (Sandbox Code Playgroud)

但有人可以解释一下为什么在OR比较中更改顺序会影响输出吗?这特别适用于Python吗?

谢谢.

DSM*_*DSM 8

从输入help("or"):

表达式x or y首先评估x ; 如果x为真,则返回其值; 否则,将评估y并返回结果值.

In None or False,None不为true,因此返回False.

False or None,False不正确,因此返回None.