print( (b, a) [a < b] )
print((lambda: b, lambda: a)[a < b]())
此功能如何工作?
掩护背后发生了什么?
这两者有什么区别?(蟒蛇)
(b, a)
是一个元组,可以像列表一样索引 -(b, a)[0]
计算结果为b
,(b, a)[1]
计算为a
。这里的诀窍是,在 Python 中,布尔值也像整数——False
像 0,True
像 1。a < b
计算为布尔值——如果a
小于b
,则True
,否则False
。
FWIW Python 有一个真正的三元运算符已经有一段时间了——编写这样的东西的正常方法是a if a < b else b
。尽管实际上在这种特殊情况下,您可能会选择更短的min(a, b)
!