使用打印功能的三元运算符


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)

最新更新