[Python-ideas] PEP 531: Existence checking operators
David Mertz
mertz at gnosis.cx
Fri Oct 28 11:56:03 EDT 2016
On Fri, Oct 28, 2016 at 11:17 AM, Paul Moore <p.f.moore at gmail.com> wrote:
> On 28 October 2016 at 15:40, Nick Coghlan <ncoghlan at gmail.com> wrote:
> > I also don't think the idea is sufficiently general to be worthy of
> > dedicated syntax if it's limited specifically to "is not None" checks
> > - None's definitely special, but it's not *that* special. Unifying
> > None, NaN, NotImplemented and Ellipsis into a meta-category of objects
> > that indicate the absence of information rather than a specific value,
> > though?
>
First thing is that I definitely DO NOT want new SYNTAX to do this. I
wouldn't mind having a new built-in function for this purpose if we could
get the call signature right. Maybe it would be called 'exists()', but
actually something like 'valued()' feels like a better fit.
For the unusual case where the "null-coalescing" operation is what I'd
want, I definitely wouldn't mind something like Barry's proposal of
processing a string version of the expression. Sure, *some* code editors
might not highlight it as much, but it's a corner case at most, to my
mind. For that, I can type 'valued("x.y.z[w]", coalesce=ALL)' or whatever.
> However, I'm not convinced by your proposal that we can unify None, NaN,
> NotImplemented and Ellipsis in the way you suggest. I wouldn't expect
> a[1, None, 2] to mean the same as a[1, ..., 2], so why should an
> operator that tested for "Ellipsis or None" be useful?
I *especially* think None and nan have very different meanings. A list of
[1.1, nan, 3.3] means that I have several floating point numbers, but one
came from a calculation that escaped the real domain. A list with [1.1,
None, 3.3] means that I have already calculated three values, but am
marking the fact I need later to perform a calculation to figure out the
middle one. These are both valid and important use cases, but they are
completely different from each other.
Yours, David...
--
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/20161028/ab9e10c6/attachment-0001.html>
More information about the Python-ideas
mailing list