Is `?=` an operator? One could define `a ?= b` as `if a is None: a = b`
(which is similar to make's operator, for example). Compare:
def func(arg, option=None):
option ?= expr
#impl
instead of:
def func(arg, option=None):
if option is None:
option = expr
#impl
def func(arg, option=None):
if option is None: option = expr
#impl
def func(arg, option=None):
option = expr if option is None else option
#impl
def func(arg, option=None):
option = option if option is not None else expr
#impl
or the proposed:
def func(arg, option?=expr):
#impl
One could argue that the OP proposal is cleaner, but it adds *another* special
notation on function definition.
On performance, this would have tobe evaluated most likely upon entering the
call.
With the `if` guards or a hypothetical `?=` assignment, the programmer can
better
control execution (other arguments and/or options may render the test
irrelevant).
The great disadvantage of the `if` guard is a line of screen and an identation
level,
(which reminds me of PEP 572 rationale).
I don't really like this `?=` assignment aesthetically, but I have written code
that
would look cleaner with it (though beauty is the eye of the beholder).
Implementing only this operator would be at least simpler than both OP proposal
and full PEP 505 (see also Neil Girdhar post above).
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/ZJIEQAS3MG7OZG3VN5OTU27GCEGGLAO7/
Code of Conduct: http://python.org/psf/codeofconduct/