最近我在python中遇到了以下代码片段:
a = 'holy'
b = 'grail'
c = None
d = a or b or c
print(d) #prints holy
我以为它会打印True
。因为bool(a) = True
,bool(b) = True
,和bool(c) = False
,我认为这会简化为(True or True) or False
,也就是True
。然而,d
被简单地分配给a
。我对python是如何工作的有一个基本的误解吗?你知道吗
有人能解释一下到底发生了什么事吗?这些or
是多余的吗?你知道吗
请参阅@heemayl的答案以获得解释。为了生成所需的内容,可以使用
any
,如果iterable的任何值是真的,则返回True
。你知道吗or
链返回链中的第一个truthy值,如果前面的所有值都是false,则返回链中的最后一个值。你知道吗因此,由于名字
a
包含一个真实值(空字符串是虚假的),因此or
链返回该值。你知道吗用
a = b = ''
试试,你会发现a or b or c
返回None
(值c
,即使它是假的)。你知道吗相关问题 更多 >
编程相关推荐