Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #67688

Re: Reference

References (3 earlier) <lf2sjk$7d4$1@ger.gmane.org> <20140303155112.46e34ff8@bigbox.christie.dr> <mailman.7666.1393884138.18130.python-list@python.org> <87siqy7whs.fsf@elektro.pacujo.net> <53155c15$0$2923$c3e8da3$76491128@news.astraweb.com>
Date 2014-03-04 10:19 -0500
Subject Re: Reference
From Jerry Hill <malaclypse2@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.7720.1393946366.18130.python-list@python.org> (permalink)

Show all headers | View raw


On Mon, Mar 3, 2014 at 11:52 PM, Steven D'Aprano <steve@pearwood.info> wrote:
> If your intention is to treat None as a singleton sentinel, not as a
> value, then you ought to use "is" to signal that intention, rather than
> using == even if you know that there won't be any false positives.

In all of the years I've been on this list, I don't think I've seen
more than one or two cases of someone deliberately treating None as a
singleton sentinel.  In most cases, they're either checking the return
value from a function or using it as a default argument to a function
to force some default behavior when no parameter is passed.  I'm
pretty sure you're going to say that the latter use is exactly where
you should us 'is' instead of '=='.  Respectfully, I disagree.

For a beginning python user, identity checking is an attractive
nuisance. The only time most beginners should use it is when comparing
to None.  But, as soon as they are taught that there are two
comparison operators, I start to see 'is' cropping up in more and more
places where they ought to use '=='.  And the problem is that
sometimes it works for them, and sometimes it doesn't.  Sure, students
eventually need to understand the difference between identity and
equality.  My problem is that by enshrining in python custom that the
only correct way to compare to None is with 'is', we have to explain
that concept way early in the teaching process.  I can't count the
number of times that a thread has completely derailed into identity vs
equality, then into interning of strings and small integers, and
suddenly the thread is 40 messages long, and no one has actually
talked about the code that was originally posted beyond that issue.
In approximately zero cases, have I seen code where 'is' versus '=='
actually made any difference, except where the 'is' is wrong.  I've
also never seen the supposedly ever-present boogie man of an object
that mistakenly compares equal to None, much less seen that object
passed to functions with None-based sentinels.

I feel like 'is' is an operator that ought to be saved for an advanced course.

Out of curiosity, do you think we should be doing truth checking with
'is'?  True and False are singletons, and it seems to me that the
justification for idenity versus equality should be just as strong
there, but I don't think I've ever seen anyone even suggest that.

-- 
Jerry

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Reference "ast" <nomail@invalid.com> - 2014-03-03 10:42 +0100
  Object identity (was: Reference) Ben Finney <ben+python@benfinney.id.au> - 2014-03-03 21:00 +1100
    Re: Object identity (was: Reference) "ast" <nomail@invalid.com> - 2014-03-03 11:21 +0100
  Re: Reference "Mark H. Harris" <harrismh777@gmail.com> - 2014-03-03 05:09 -0800
  Re: Reference Grant Edwards <invalid@invalid.invalid> - 2014-03-03 14:29 +0000
  Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-03 07:52 -0800
    Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-04 08:10 +1100
    Re: Reference Tim Chase <python.list@tim.thechases.com> - 2014-03-03 15:24 -0600
    Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-04 08:31 +1100
    Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-03 21:35 +0000
      Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-04 00:07 +0200
        Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-04 09:18 +1100
          Re: Reference Alister <alister.ware@ntlworld.com> - 2014-03-04 11:10 +0000
            Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-04 11:48 +0000
              Re: Reference "Rhodri James" <rhodri@wildebst.org.uk> - 2014-03-05 00:25 +0000
    Re: Reference Tim Chase <python.list@tim.thechases.com> - 2014-03-03 15:51 -0600
    Re: Reference Jerry Hill <malaclypse2@gmail.com> - 2014-03-03 17:02 -0500
      Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-04 00:22 +0200
        Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-04 09:27 +1100
        Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-04 09:33 +1100
        Re: Reference Steven D'Aprano <steve@pearwood.info> - 2014-03-04 04:52 +0000
          Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-04 16:24 +1100
            Re: Reference "Rhodri James" <rhodri@wildebst.org.uk> - 2014-03-05 01:08 +0000
              Re: Reference Roy Smith <roy@panix.com> - 2014-03-04 21:09 -0500
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 19:36 -0800
                Re: Reference Ian Kelly <ian.g.kelly@gmail.com> - 2014-03-04 21:08 -0700
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 20:31 -0800
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-05 15:32 +1100
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 20:47 -0800
                Re: Reference Steven D'Aprano <steve@pearwood.info> - 2014-03-05 05:06 +0000
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 21:47 -0800
                Re: Reference alex23 <wuwei23@gmail.com> - 2014-03-05 16:01 +1000
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 22:10 -0800
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-05 17:22 +1100
                Re: Reference alex23 <wuwei23@gmail.com> - 2014-03-05 16:28 +1000
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-05 12:24 +0000
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-05 12:21 +0000
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-05 17:20 +1100
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-05 09:40 -0800
                Re: Reference Tim Chase <python.list@tim.thechases.com> - 2014-03-05 12:12 -0600
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 05:33 +1100
                Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-05 18:19 +0000
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 22:23 +0200
                Re: Reference Grant Edwards <invalid@invalid.invalid> - 2014-03-05 20:31 +0000
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 22:46 +0200
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 08:07 +1100
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 08:10 +1100
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-05 21:34 +0000
                Re: Reference Terry Reedy <tjreedy@udel.edu> - 2014-03-05 18:00 -0500
                Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-06 03:01 +0000
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 22:03 -0800
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-05 17:26 +1100
                Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 17:32 +1100
                Re: Reference Tim Chase <python.list@tim.thechases.com> - 2014-03-05 08:24 -0600
                Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-05 18:29 +0000
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 22:34 +0200
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 08:01 +1100
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 23:14 +0200
                Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-06 08:26 +1100
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 23:50 +0200
                Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-06 00:35 +0000
                Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-06 11:50 +1100
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-06 17:46 +0000
                Re: Reference Tim Chase <python.list@tim.thechases.com> - 2014-03-05 15:33 -0600
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 08:37 +1100
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-06 02:52 +0200
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-06 12:05 +1100
                Re: Reference alex23 <wuwei23@gmail.com> - 2014-03-06 12:12 +1000
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-05 21:46 +0000
                Re: Reference Marko Rauhamaa <marko@pacujo.net> - 2014-03-05 08:23 +0200
                Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 22:33 -0800
                Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-05 17:40 +1100
                Re: Reference Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-03-05 12:35 +0000
                Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 23:45 +1100
          Re: Reference Jerry Hill <malaclypse2@gmail.com> - 2014-03-04 10:19 -0500
            Re: Reference Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-03-04 15:42 +0000
              Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 03:02 +1100
                Re: Reference Roy Smith <roy@panix.com> - 2014-03-04 11:14 -0500
              Re: Reference MRAB <python@mrabarnett.plus.com> - 2014-03-04 17:12 +0000
            Re: Reference Rustom Mody <rustompmody@gmail.com> - 2014-03-04 08:24 -0800
          Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 02:25 +1100
          Re: Reference Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2014-03-05 14:37 +0100
      Re: Reference Steven D'Aprano <steve@pearwood.info> - 2014-03-04 03:59 +0000
    Re: Reference Ben Finney <ben+python@benfinney.id.au> - 2014-03-04 09:17 +1100
      Re: Reference Roy Smith <roy@panix.com> - 2014-03-03 18:02 -0500
        Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-04 10:09 +1100
        Re: Reference Steven D'Aprano <steve@pearwood.info> - 2014-03-04 04:38 +0000
  Re: Reference Terry Reedy <tjreedy@udel.edu> - 2014-03-03 13:48 -0500
    Re: Reference Steven D'Aprano <steve@pearwood.info> - 2014-03-04 03:45 +0000
    Re: Reference Alexander Blinne <news@blinne.net> - 2014-03-04 13:55 +0100
      Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 01:06 +1100
        Re: Reference Alexander Blinne <news@blinne.net> - 2014-03-04 22:53 +0100
          Re: Reference Chris Angelico <rosuav@gmail.com> - 2014-03-05 09:01 +1100

csiph-web