Python 三元运算顺序
Python ternary order of operations
[on_true] if [expression] else [on_false]
如果 expression
是 False
,[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'
[on_true] if [expression] else [on_false]
如果 expression
是 False
,[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'