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

时间:2019-03-23 15:38:37

标签: python variable-assignment

最近我在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的{​​{1}}。但是,True仅被分配给d。我对python的工作方式有基本的误解吗?

有人可以确切解释发生了什么吗? a只是多余的吗?

2 个答案:

答案 0 :(得分:1)

or链返回第一个 truthy 值,如果所有先前值均为 falsey ,则返回链中的最后一个。

因此,由于名字a包含真实值(空字符串为false BTW),因此or链返回该值。

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

答案 1 :(得分:0)

请参阅@heemayl的答案以获取解释。为了产生所需的内容,可以使用any,如果iterable的任何值是真实的,则返回True

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

print(d) # Now prints True