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@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).