On Thu, Nov 03, 2016 at 12:35:07PM -0700, Chris Barker wrote:
> On Thu, Nov 3, 2016 at 12:00 PM, MRAB <[email protected]> wrote:
>
> > self.an_arg = the_default if an_arg is None else an_arg
>
> > No, ?? is a bit like 'or', except that only None is falsey, so it would be:
> >
> > self.an_arg = an_arg ?? the_default
>
>
> thanks! and actually, that reads much better to me.
That suggests a possible different colour for this operator: `?or`.
(Apologies if that's already been suggested and rejected earlier.)
The None-aware "safe navigation" operators ?. and ?[] will be used where
Python already uses punctuation:
spam.eggs # ordinary attribute lookup
spam?.eggs # None-aware attribute lookup
spam[eggs] # ordinary item lookup
spam?[eggs] # None-aware item lookup
which is simple enough to remember: just prefix your usual operator with
a question mark to make it None-aware. But one of the disadvantages of
?? as an operator is that it replaces a keyword with completely
unrelated punctuation:
spam or default # default only if spam is any Falsey value
spam ?? default # default only if spam is None
Compared to:
spam ?or default
gives us the same rule: prefix the `or` operator with ? to make it None-
aware.
--
Steve
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/