On Tue, May 26, 2020 at 9:52 AM Steven D'Aprano <st...@pearwood.info> wrote:

> On Mon, May 25, 2020 at 08:54:52PM -0700, Christopher Barker wrote:
> > On Mon, May 25, 2020 at 6:37 PM Steven D'Aprano <st...@pearwood.info>
> wrote:
>


> > > > A NOT_SPECIFIED singleton in builtins would be pretty clear.
>


> > > Guido's time machine strikes again! We already have that "not
> specified"
> > > singleton in the builtins, with a nice repr. It's spelled "None".
> > >
> > well, yes and no. this conversation was in the context of "None" works
> fine
> > most of the time.
>
> Um, yes? I know what the context is, I'm pretty sure I already pointed
> out that None works fine most of the time. So we already have the
> feature you wanted: a sentinel value that implies "no value was passed".
> That's one of the purposes of None.
>

This is the point -- it "implies" no value was passed -- which is usually
good enough, but there is something to be said for being more explicit
about that.

and it's "one" of the purposes -- None has many purposes, and these
sometimes (though not often) confilct / overlap with the "no value was
passed" use case.

If you want a *second* such sentinel value, we run into the problem I go
> on to describe.
>

As far as I can tell -- that problem is that it still wouldn't be useful
for ALL cases of not passing arguments.Which doesn't, by any means mean
that it would never be useful.

I would venture to guess that if such a special value existed already, it
would be mostly used in cases where None would have been fine, but it would
be more explicit, which I think would be a good thing.

Another thing to keep in mind is that None is not, in fact, all that
special. The only things (that I can think of at the moment) special about
are:
- it is a builtin
- it is the default value passed back from function calls
- It's a well established convention
- anything else??
(note: it would become a more special part of the language id PEP 505 or
something like it were to be adapted)

That later point is key -- we all agree to use None for things like the
current example: meaning no specified, but there's nothing in the language
spec or None itself that requires that.

And this theoretical NOT_SPECIFIED value *could* have special properties in
the language, for instance:

function_call(x=NOT_SPECIFIED)

could be illegal. Is that a good idea? I haven't thought it out, but it
*could* be done.

Anyway -- all I'm suggesting is that yes, it would be nice to have another
"standard" value with a more defined meaning.

Is it critically important? no
Would it be very disruptive? no. well, maybe yes, as we'd have a long
period of people using both None and gteh new one in the same context --
and that would be even more confusing.

Could there be a dozen or more other "standard" values that would be
equally useful? maybe, and if that's the case, then yeah, probably not
worth doing this at all.

I'm not sure if this is really parallel, but this reminds me of NaN -- NaN
can be the result of a calculation gone bad, and it's also used to mean
"missing value", or "not set", and other use cases. And this works most of
the time OK, but it IS an issue in some cases -- witness the massive
discussions around how to handle missing values in numpy. Another special
floating point value that specifically means "missing data" would be pretty
helpful.

Anyway, I'm not pushing this, and there doesn't seem to be much support, so
I'm done.

I am intrigued by Chris A's idea of leveraging unbound locals though.

-CHB


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ML3ZDE3P3GQAUUJV3EHXPLVGI3SX2MUN/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to