Steven D'Aprano writes:

 > Ah, but that's because you're a Python programmer who has been seeped in 
 > the language for many, many years :-)

No, it's because I'm a Lisp programmer for twice as long, and know the
differences among #'=, #'string=, #'equal, #'eql, and #'eq (the last
is `is'`.

 > To most people, "is" and "equals" are synonyms,

In Python, this is a *bug*, and if it's not fixed, they are going to
have a lot of trouble with mutable containers.  Especially as default
values for function arguments.

 > So for somebody who is expecting "is" to be a synonym for `==`, how do 
 > you explain what it actually is? You need to talk about the Python 
 > execution model,

I guess you need this if you want to explain how "x == None" can fail
to do what you want, but that's independent of None's uniqueness.

 > how all values are objects, and that the reason that `x is None`
 > always does the right thing

TOOWTDI violation.  Python has both `==` and `is` *because* they do
different things.  What each does is a right thing.  The programmer's
problem is to learn what each does and when to use it.

 > but `x is []` doesn't is that None is a singleton, so that there is
 > only one object that is None, but the empty list is not, there are
 > many, many distinct empty lists.

I would avoid use of "singleton" personally, since it's also used to
denote a *type* with only one member, and for many students (eg, all
of mine) you would have to define it.  I don't see what "None is a
singleton, so that" adds to

    You need to talk about the Python execution model, how all values
    are objects, and that the reason that `x is None` always does the
    right thing but `x is []` doesn't is that there is only one object
    that is None, but the empty list is not, there are many, many
    distinct empty lists.

 > You might be able to avoid using the word "singleton",

I just did, or maybe I should say, you just did. ;-)

Steve
_______________________________________________
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/KQGCOPDOSTTL2AXHSCBHQXUXGAM2HO52/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to