Python 无和逻辑操作和/或

Python 无和逻辑操作和/或,python,python-3.x,nonetype,Python,Python 3.x,Nonetype,我试图完全理解None作为逻辑和和或操作的布尔值的行为,因此我尝试了以下代码: 对于[(无,假),(无,真),(假,无),(真,无)]中的a,b: 列印(f){str(a): 为什么它与为和显示的行为不一致?我希望first和Case都返回False 这是完全一致的 和如果第一个操作数是“falsy”,则返回第一个操作数,否则第二个;或如果第一个操作数是“truthy”,则返回第二个操作数。都不将其操作数转换为布尔值 None是“falsy”,因为如果falsyNone和x返回None,则和返回

我试图完全理解
None
作为逻辑
操作的布尔值的行为,因此我尝试了以下代码:

对于[(无,假),(无,真),(假,无),(真,无)]中的a,b:
列印(f){str(a):
为什么它与为和显示的行为不一致?我希望first和Case都返回False

这是完全一致的

如果第一个操作数是“falsy”,则返回第一个操作数,否则第二个;
如果第一个操作数是“truthy”,则返回第二个操作数。都不将其操作数转换为布尔值

None
是“falsy”,因为如果falsy
None和x
返回
None
,则
返回第一个操作数,而不管
x


另外,由于
|
&
是实际的Python运算符(但不是布尔运算符或短路),因此您的表非常混乱.

这是否回答了您的问题?.TL;DR:
返回第一个假值(如果有),否则返回表达式中的最后一个值。
返回第一个真值(如果有),否则返回表达式中的最后一个值。@Tomerikoo事实上是这样的。我认为它返回了
假值(如果有)一个falsy值,而不是返回falsy值本身。