下面的python3.x表达式是如何计算的,答案是如何得出的10而不是元组?
元组展示三元运算符
a, b = 10,20
print( (b, a)[a < b] )
我试图从不同的来源了解这个表达式是如何计算的,但没有得到任何很好的答案。
a,b=10,20
print( (a, b) [a < b] )
评估为 20,我认为应该是 10。 它是如何被评估的?
a < b
是一个布尔表达式,因此它被计算为True
或False
。反过来,True
和 False
是int
的子类,其值分别为 1
和 0
。
因此,如果a > b
,(a, b)[a < b]
评估为(a, b)[0]
,如果a < b
,则评估为(a, b)[1]
。
如果a, b = 10, 20
则(a, b)[a < b]
评估为:
(10, 20)[10 < 20]
.
(10, 20)[True]
.
(10, 20)[1]
.
20