[Python-ideas] Null coalescing operator
David Mertz
mertz at gnosis.cx
Fri Sep 9 16:13:51 EDT 2016
I'd note you can also save 4 characters by writing:
instead if expr is None else expr
On Fri, Sep 9, 2016 at 1:10 PM, David Mertz <mertz at gnosis.cx> wrote:
> This idea has come up before. While I can see the use of it, to me at
> least that use doesn't feel nearly common enough to warrant dedicated
> syntax.
>
> In many cases, it is a "truthy" value you are looking for rather than `is
> not None` specifically. That has a convenient spelling:
>
> expr or instead
>
>
> If it really is the actual None-ness you are curious about, you need the
> slightly longer:
>
> expr if expr is not None else instead
>
>
> Your example seems to want to fall back to a statement suite rather than a
> value. To do that, you'd have to put the suite inside a function such as:
>
> def Raise(err):
>
> raise err
>
>
> And use it something like:
>
> self.totalsizeof or Raise(SizeofError(...))
>
>
> On Fri, Sep 9, 2016 at 1:01 PM, Arek Bulski <arek.bulski at gmail.com> wrote:
>
>> Sometimes I find myself in need of this nice operator that I used back in
>> the days when I was programming in .NET, essentially an expression
>>
>> >>> expr ?? instead
>>
>> should return expr when it `is not None` and `instead` otherwise.
>>
>> A piece of code that I just wrote, you can see a use case:
>>
>> def _sizeof(self, context):
>> if self.totalsizeof is not None:
>> return self.totalsizeof
>> else:
>> raise SizeofError("cannot calculate size")
>>
>> With the oprator it would just be
>>
>> def _sizeof(self, context):
>> return self.totalsizeof ?? raise SizeofError("cannot calculate
>> size")
>>
>>
>>
>> pozdrawiam,
>> Arkadiusz Bulski
>>
>>
>> _______________________________________________
>> 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/
>>
>
>
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons. Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>
--
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons. Intellectual property is
to the 21st century what the slave trade was to the 16th.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160909/fb5bf917/attachment.html>
More information about the Python-ideas
mailing list