我是初学者,这是一个相对简单的问题,但我在尝试解决这个问题时遇到了麻烦。键入" True或5"进入python,它返回True,当你键入" 5或True"它返回5.这是为什么?为什么他们不回答相同的答案?谢谢!
答案 0 :(得分:4)
基本上or
会发生什么,它会向左看操作数并对其进行评估bool(..)
。如果返回True
,则返回左操作数。否则返回右操作数。
所以
a or b
等同于:
if bool(a):
return a
else:
return b
链接导致一系列if
语句如:
a or b or c or d
相当于:
if bool(a):
return a
elif bool(b):
return b
elif bool(c):
return c
else:
return d
正如您可能会注意到的,如果您使用布尔值进行数学计算,您会发现or
确实表现为逻辑或运算符。但从某种意义上说,它可以提供各种价值观。
对于bool(..)
,使用标准内置bool(..)
。
顺便提一下and
也是如此:
a and b
等同于:
if not bool(a):
return a
else:
return b
答案 1 :(得分:2)
or
运算符在第一个值为真时(即计算为True
)时短路。当发生这种情况时,会返回第一个值。
因此,True or 5
上的True
短路,因此它会返回True
。 5 or True
上的5
短路(因为5是真的,对于整数来说是非零的),因此返回5
。
答案 2 :(得分:2)
or
返回真正的第一个操作数(如果它们都是假的,则返回最后一个操作数)。这可用于检查数据的有效性,如果值为None
,则默认为。
a = None
b = a or "some default"
b
'some default'
特别是在像JavaScript这样的语言中,这是给函数可选参数的常用习惯。