在python中,如果我使用三元运算符:
x = a if <condition> else b
即使a
为假,condition
也会执行吗?或者condition
首先进行评估,然后根据结果转到a
或b
?
答案 0 :(得分:5)
首先评估条件,如果条件为假,则不评估a
:documentation。
答案 1 :(得分:3)
根据条件是否符合要求进行评估。例如:
condition = True
print(2 if condition else 1/0)
#Output is 2
print((1/0, 2)[condition])
#ZeroDivisionError is raised
无论1/0
是否引发错误,都不会评估,因为评估条件为True。
Sames以另一种方式发生:
condition = False
print(1/0 if condition else 2)
#Output is 2