将一个变量分配给另一个变量或第三个变量

Assigning one variable to another variable or a third variable

最近我在 python 中看到了这个代码片段:

a = 'holy'
b = 'grail'
c = None
d = a or b or c

print(d) #prints holy

我以为它会打印 True。因为 bool(a) = Truebool(b) = Truebool(c) = False,我认为这会简化为 (True or True) or False,即 True。然而,d 只是分配给 a。我对 python 的工作原理有根本性的误解吗?

有人能准确解释一下这是怎么回事吗? or 是多余的吗?

一个 or 链 returns 第一个 truthy 值或链中的最后一个,如果所有前面的值都是 falsey.

因此,由于名字 a 包含真值(顺便说一句,空字符串是假的),or 链 returns 那。

尝试使用 a = b = '',您会发现 a or b or c 返回 Nonec 的值,即使它是 falsey).

查看@heemayl 的回答以获得解释。为了产生你想要的东西,你可以使用 any,如果 iterable 的任何值是真实的 returns True

a = 'holy'
b = 'grail'
c = None
d = any([a, b, c])

print(d) # Now prints True