Python:True或5 vs 5或True

时间:2017-01-15 20:32:44

标签: python

我是初学者,这是一个相对简单的问题,但我在尝试解决这个问题时遇到了麻烦。键入" True或5"进入python,它返回True,当你键入" 5或True"它返回5.这是为什么?为什么他们不回答相同的答案?谢谢!

3 个答案:

答案 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短路,因此它会返回True5 or True上的5短路(因为5是真的,对于整数来说是非零的),因此返回5

答案 2 :(得分:2)

or返回真正的第一个操作数(如果它们都是假的,则返回最后一个操作数)。这可用于检查数据的有效性,如果值为None,则默认为。

a = None
b = a or "some default"

b
'some default'

特别是在像JavaScript这样的语言中,这是给函数可选参数的常用习惯。