将一个变量分配给另一个变量或第三个变量
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) = True
、bool(b) = True
和 bool(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
返回 None
(c
的值,即使它是 falsey).
查看@heemayl 的回答以获得解释。为了产生你想要的东西,你可以使用 any
,如果 iterable 的任何值是真实的 returns True
。
a = 'holy'
b = 'grail'
c = None
d = any([a, b, c])
print(d) # Now prints True
最近我在 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
是多余的吗?
一个 or
链 returns 第一个 truthy 值或链中的最后一个,如果所有前面的值都是 falsey.
因此,由于名字 a
包含真值(顺便说一句,空字符串是假的),or
链 returns 那。
尝试使用 a = b = ''
,您会发现 a or b or c
返回 None
(c
的值,即使它是 falsey).
查看@heemayl 的回答以获得解释。为了产生你想要的东西,你可以使用 any
,如果 iterable 的任何值是真实的 returns True
。
a = 'holy'
b = 'grail'
c = None
d = any([a, b, c])
print(d) # Now prints True