[Python-ideas] Leave off "else" in ternary expression
Sjoerd Job Postmus
sjoerdjob at sjoerdjob.com
Fri Oct 28 15:41:09 EDT 2016
On Fri, Oct 28, 2016 at 11:28:16AM -0400, Todd wrote:
> The null-coalescing discussion made me think about the current ternary "x =
> a if b else c" expression. In normal "if / else" clauses, the "else" is
> optional. I propose doing the same thing with ternary expressions
> (although I don't know what the result would be called, a "binary
> expression"?)
>
> The idea would be to allow this syntax:
>
> x = a if b
>
> Which would be equivalent to:
>
> x = a if b else x
>
> I think this would be useful syntax. In particular, I see it being useful
> for default value checking, but can also be used to override the result of
> particular corner cases from functions or methods..
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
To me, it is completely un-intuitive that it would work like that. It
seems to parse as
(x = a) if b
instead as
x = (a if b)
That would make an assignment part of an expression, which seems very
un-Pythonic. We also do not have
if (x = a): pass
When I first read your proposal, I assumed it would mean "use `None` as
default `else` expression". Upon reading it, I am quite certain that the
semantics you propose are not going to make it into Python. (But then
again, I'm not the BDFL).
More information about the Python-ideas
mailing list