Python 3.x 为什么';[假]或[真]';在python3中计算为[False]?

Python 3.x 为什么';[假]或[真]';在python3中计算为[False]?,python-3.x,Python 3.x,为什么在python3中“[False]或[True]”的计算结果为[False]?这是我试过的 [True] or [False] evaluates to [True] [False] or [True] evaluates to [False] [False] or True evaluates to [False] False or [True] evaluates to [True] False or True evaluates to True 为什么or运算符不可

为什么在python3中“[False]或[True]”的计算结果为[False]?这是我试过的

[True] or [False] evaluates to [True]
[False] or [True] evaluates to [False]
[False] or True   evaluates to [False]
False or [True]   evaluates to [True]
False or True     evaluates to True
为什么or运算符不可交换?

1)非空序列,如
[True]
&
[False]
被视为True。序列中的内容无关紧要,只有当它为空时才会是假的

2) 表达式
x或y
首先计算
x
;如果
x
为真,则返回其值;否则,将计算
y
,并返回结果值

现在将这些发现应用于您的表达式:

[True] or [False] evaluates to True, return first, [True]
[False] or [True] evaluates to True, return first, [False]
[False] or True   evaluates to True, return first, [False]
False or [True]   evaluates to True, return second, [True]
False or True     evaluates to True, return second, True

谢谢你的回答!我不知道这是一个bug还是一个功能,但这个规则只是让or运算符变得如此违反直觉,因为它现在是非交换的。此外,我发现“”或[]的计算结果为[],而[]或“”的计算结果为“”。这似乎不符合你的描述。你知道为什么会这样吗?我的解释有点简化了。完整的方法是:表达式x或y首先计算x;如果x为true,则返回其值;否则,将对y求值并返回结果值。您可以在此处阅读有关行为的信息:
为什么对于非布尔参数应该是可交换的<代码>3或4是
3
,但
4或3
4
。你怎么能把它变成可交换的?没关系。我希望python将3和4计算为True并返回True。结果是,操作员不是这样的。