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

Ternary operator using print function

print( (b, a) [a < b] ) 
print((lambda: b, lambda: a)[a < b]()) 

这个功能是如何工作的?
封面背后发生了什么?
这两者有什么区别? (PYTHON)

(b, a) 是一个元组,可以像列表一样进行索引——(b, a)[0] 计算为 b(b, a)[1]a。这里的技巧是,在 Python 中,bool 也像整数一样工作——False 像 0,True 像 1。a < b 计算为 bool——到 True 如果 a 小于 b,否则为 False

FWIW Python 有一个真正的三元运算符已经有一段时间了——编写这样的东西的正常方法是 a if a < b else b。尽管实际上在这种特殊情况下,您可能会选择更短的 min(a, b)!