我在我的一个函数中发现了一个特定的错误,其中按位比较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吗?
谢谢.
从输入help("or"):
表达式
x or y首先评估x ; 如果x为真,则返回其值; 否则,将评估y并返回结果值.
In None or False,None不为true,因此返回False.
在False or None,False不正确,因此返回None.