[Python-Dev] Re: PEP 505 (None-aware operators) for Python 3.11

2021-10-22 Thread Marc Mueller
Most of the discussion so far has been focused on (?.). Tbh though, I'm more 
interested in (??) and (??=). Just reading through code, I constantly notice 
boilerplate like this which could easily be substituted.

variable = some_function(...)
if variable is None:
variable = []  # some default value

# a bit better with an assignment expression
if (variable := some_function(...)) is None:
variable = []

# or worse with an if expression
variable = some_function(...) if some_function(...) else []
# also possible with :=, but not much better
variable = x if (x := some_function(...)) else []

# using the coalesce operator would be much more readable IMO
variable = some_function(...)  ?? []

If (?.) and (?[) are rejected / deferred, maybe there is interest in seeing at 
least (??) and (??=) through?
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/7DED2THUJJPBS556YQ4YHH3TN6WGH2UH/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: PEP 505 (None-aware operators) for Python 3.11

2021-10-23 Thread Marc Mueller
> Bear in mind that these last ones are exactly equivalent to the "or"
> operator, as they'll use the default if you have any falsy value.
> variable = some_function(...) or []

Isn't that in itself a good argument in favor of (??) ? By missing to add 'is 
None', I would have already added a subtle bug that could be quite difficult to 
find. (??) could prevent that while also being more readable.

> I'm actually more interested in a better idiom for non-constant
> function default arguments, since that's the place where this kind of
> thing often comes up. A nice ??= operator might help if your default
> is None, but if you then change the default to be object(), you can't
> use ??= any more. [...]

True, but from my experience 'None' is just by far the most common default. Why 
not improve how we handle it?
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/VDMN5ZHPMMBLCHVM63RROZJYAIII74A3/
Code of Conduct: http://python.org/psf/codeofconduct/