[on_true] if [expression] else [on_false]
如果
expression
是False
,[on_true]
仍然会被评估吗?我之所以这么问是因为我有一个作为
[on_true]
的Django ORM查询,并且如果每次运行此行都会评估,则会以另一种方式编写它。[on_true] if [expression] else [on_false]
expression
是False
,[on_true]
仍然会被评估吗?[on_true]
的Django ORM查询,并且如果每次运行此行都会评估,则会以另一种方式编写它。在检查条件的真实性之后,条件表达式只会评估一侧。这在语言参考文档中得到保证和记录: https://docs.python.org/3/reference/expressions.html#conditional-expressions
您可以放任何垃圾表达式来验证此事实:
>>> wtf.errorerror - error + 1/0 if False else "potato"
'potato'
print("x") if False else print("y")
只会输出y
。 - andreihondrari