Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OR运算符比较None和bool_Python - Fatal编程技术网

Python OR运算符比较None和bool

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

我在我的一个函数中发现了一个特定的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比较中更改顺序会影响输出?这是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是-不确定
所有
来自哪里。很好,谢谢。