Python OR运算符比较None和bool
我在我的一个函数中发现了一个特定的bug,其中按位比较的arg的顺序似乎很重要:Python OR运算符比较None和bool,python,Python,我在我的一个函数中发现了一个特定的bug,其中按位比较的arg的顺序似乎很重要: In: None or False Out: False In: False or None Out: None 使用Python2.7.2和IPython 0.10.2对此进行了检查 我可以确保,在一个元素为无的情况下,确保他是比较的第一个arg,如下所示 if a==None: a or b else: b or a 但是,有谁能解释一下,为什么在OR比较中更改顺序会影响输出?这是Pyth
In: None or False
Out: False
In: False or None
Out: None
使用Python2.7.2和IPython 0.10.2对此进行了检查
我可以确保,在一个元素为无的情况下,确保他是比较的第一个arg,如下所示
if a==None:
a or b
else:
b or a
但是,有谁能解释一下,为什么在OR比较中更改顺序会影响输出?这是Python特有的吗
谢谢。通过键入帮助(“或”)
:
表达式x或y
首先计算x;如果x为真,则其
返回值;否则,将计算y并计算结果值
他回来了
在None或False
中,None不是true,因此返回False
在False或None
中,False不是true,因此不会返回任何值。通过键入帮助(“或”)
:
表达式x或y
首先计算x;如果x为真,则其
返回值;否则,将计算y并计算结果值
他回来了
在None或False
中,None不是true,因此返回False
在
False或None
中,False不是true,因此不返回任何值。DSM已经解释了或
运算符的作用。您是否希望结果为布尔值,因此None或False
或False或None
始终为False
?如果是这样,那么您需要明确说明它,并使用bool(None或False)
,或者如果您需要检查很多,则使用any([None,False])
等。DSM已经解释了或操作符的功能。您是否希望结果为布尔值,因此None或False
或False或None
始终为False
?如果是这样的话,那么你需要明确地说明它,并使用bool(None或False)
,或者如果你有很多要检查的,那么any([None,False])
等等。我从未见过逻辑运算符或
的顺序无关紧要的语言,除非你见过这样的语言,python的行为是正常的
或
从左到右处理语句,直到其中一个为真(或结束)
和
从左到右处理语句,直到其中一个语句为False(或结束)
按位or运算符(在Python中,与大多数语言一样)是管道“|”。我从未见过逻辑运算符或
的顺序无关紧要的语言,除非您见过这样的语言,否则Python的行为是正常的
或
从左到右处理语句,直到其中一个为真(或结束)
和
从左到右处理语句,直到其中一个语句为False(或结束)
按位or运算符(在Python中,与大多数语言一样)是管道“|”。它是布尔运算符的快捷方式。如果第一个操作数的计算结果为
false`将返回第二个操作数。或
既不是位运算符,也不是比较运算符。它是布尔运算符的快捷行为。如果第一个操作数的计算结果为
false`将返回第二个操作数。或
既不是位运算符,也不是比较运算符。如果您要或
输入许多值,那么您肯定想要任意
,而不是全部
@KarlKnechtel Yes-不确定全部
从何而来。好的地方-谢谢。如果你正在或输入许多值,那么你肯定想要任何
,而不是所有
@KarlKnechtel是-不确定所有
来自哪里。很好,谢谢。