Python 三元运算顺序

Python ternary order of operations

[on_true] if [expression] else [on_false]

如果 expressionFalse[on_true] 是否仍然得到评估?

我问的原因是因为我有一个 django ORM 查询作为 [on_true] 并且如果它每次评估此行时都会以另一种方式编写此行 运行.

检查条件的真实性后,将只评估条件表达式的一侧。这在语言参考中得到保证和记录:https://docs.python.org/3/reference/expressions.html#conditional-expressions

你可以放任何乱七八糟的表达来让自己相信这个事实:

>>> wtf.errorerror - error + 1/0 if False else "potato"
'potato'