Sure, once you cherry-pick the most trivial imaginable example ternary expressions are easy enough to read. First counter-example which came to mind:<p><pre><code> print("yes") if random.choice([True, False]) else print("no")
</code></pre>
Does this do the right thing? I was pleasantly surprised to find that this is indeed lazily evaluated, but that's not at all intuitive: first because `print("yes")` comes <i>before</i> the conditional (note that the Lisp example had the conditional first), and second because not all popular languages work like that.<p>There are lots of examples where ternary makes things obviously harder to read, such as when at least two of the three expressions are non-trivial. Which one would you rather read?<p><pre><code> if some_complex_condition(using, four, different, parameters):
do_a_thing(now, using, five, different, parameters)
else:
do_another_thing(with, three, parameters)
</code></pre>
or<p><pre><code> do_a_thing(now, using, five, different, parameters) if some_complex_condition(using, four, different, parameters) else do_another_thing(having, three, parameters)
</code></pre>
(or<p><pre><code> do_a_thing(now, using, five, different, parameters) if some_complex_condition(
using, four, different, parameters
) else do_another_thing(having, three, parameters)
</code></pre>
after Black.)