In python, if I use a ternary operator:
x = a if <condition> else b
Is a
executed even if condition
is false? Or does condition
evaluate first and then goes to either a
or b
depending on the result?
The condition is evaluated first, if it is False, a
is not evaluated: documentation.
It gets evaluated depending if meets the condition. For example:
condition = True
print(2 if condition else 1/0)
#Output is 2
print((1/0, 2)[condition])
#ZeroDivisionError is raised
No matter if 1/0
raise an error, is never evaluated as the condition was True on the evaluation.
Sames happen in the other way:
condition = False
print(1/0 if condition else 2)
#Output is 2