Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #101839
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Subject | Re: "x == None" vs "x is None" |
| Date | Sun, 17 Jan 2016 21:15:21 +1100 |
| Lines | 41 |
| Message-ID | <mailman.57.1453025729.15297.python-list@python.org> (permalink) |
| References | <n7fo7q$dso$1@news2.informatik.uni-stuttgart.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8 |
| X-Trace | news.uni-berlin.de WLihMPkMWROJrrvMBxHI7QwtSv0RHYSC3iEz0Kt3r83g== |
| Return-Path | <rosuav@gmail.com> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.003 |
| X-Spam-Evidence | '*H*': 0.99; '*S*': 0.00; 'none:': 0.05; 'semantic': 0.07; 'cc:addr:python-list': 0.09; 'check.': 0.09; 'none"': 0.09; 'none.': 0.09; 'pointers': 0.09; 'subject:None': 0.09; 'jan': 0.11; 'def': 0.13; 'do,': 0.15; '"does': 0.16; '"is': 0.16; '2016': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'instance:': 0.16; "objects'": 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'singleton': 0.16; 'wrote:': 0.16; 'cheap': 0.18; 'comparing': 0.18; '(in': 0.18; '>>>': 0.20; 'cc:2**0': 0.20; 'cc:addr:python.org': 0.20; 'not,': 0.22; 'slightly': 0.23; 'header:In-Reply-To:1': 0.24; 'possibility': 0.27; 'question': 0.27; 'message- id:@mail.gmail.com': 0.27; 'equality': 0.29; 'itself,': 0.29; 'objects': 0.29; 'code': 0.30; 'checks': 0.30; 'says': 0.32; 'generally': 0.32; 'class': 0.33; 'equal': 0.34; 'received:google.com': 0.35; 'false': 0.35; 'identity': 0.35; 'asking': 0.35; 'comment': 0.35; 'but': 0.36; 'should': 0.36; 'received:209.85': 0.36; 'subject:" ': 0.36; 'pm,': 0.36; 'two': 0.37; 'there,': 0.37; 'received:209.85.213': 0.37; 'itself': 0.38; 'received:209': 0.38; 'several': 0.38; 'someone': 0.38; 'along': 0.39; 'some': 0.40; 'term': 0.60; 'your': 0.60; 'skip:n 10': 0.62; 'more': 0.63; 'different': 0.63; 'within': 0.64; 'places': 0.64; 'decided': 0.66; 'incredibly': 0.76; 'chrisa': 0.84; 'faster.': 0.84; 'to:none': 0.91; 'why?': 0.91 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=9MDp5RWXz5C4lnkmLntcAT/fDjUvOVN4g//Qm1WB3Oc=; b=f7t8HhrFN42IseErY+KqiYW1ryKKDEU0wckijGjECZ1wb+tseBKo9lbJp9gST96Y4x xlZRLmQMlKs359VMe/S3VZyIdyhFfhANFDEEeHayGCr7iZvKjOpG/+vSm1Zs49tKY9hg spY4q7qpI+6KM1hMBuHZpDeGfVMo5HGIIcmvvo3ParFiEgT6RWG9+RO+23gyMGDIZmB2 njG7mJQ0+wa6Zio9VFfDelFKsQ/vukWC+kBo0p4ozGXNTm376vNllz5PYuJ02kv9phjr L7yGFR5MHsi4bjL1rOIUlC7YCaszclRZ35VBJGwUZiEhNHOtp7AD04YO+6ZcmsW/zrza MR9A== |
| X-Google-DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:cc:content-type; bh=9MDp5RWXz5C4lnkmLntcAT/fDjUvOVN4g//Qm1WB3Oc=; b=Vo4YURJ2VKkkJzsAFXDO5BeuECc1DOfZS4hWN2Sj7Bq6+ZSAgHzddA3RfXrfCRGgd4 ujxUwUctJxOJqWfvbUBsfVFylAcAG0aFQhsScgZFXZSyHHb+A/mLVh7X63dYTMxUXvwC JShOGPYey1wwAdc7NP3uo9PD5FHl+j1HGz0lWhd/aVr/U8WmpU5ZaxdLzDhYTmj9ksXq 2Ysyl2c8I5w3TgbN0XIKUXwjWDGy9+hHitceV9qdqLGRPuGHV0O9Ac9vjDg8ftf93mnR P/dibvsZ5TqHc1KKjWAYG/Ru9LTBAgGQZ1mlcmQCabkz6n5KuOcTecqP0jE0+Yx/Akq4 KJ0w== |
| X-Gm-Message-State | AG10YOQI2OGarx7KqySrgnXKH2c3W0t6Kwh07yy26bk7kAK4+jbj0abs47szQIaaTiY0Z3ab27Nr5h4qVoJ2qA== |
| X-Received | by 10.50.66.179 with SMTP id g19mr6506761igt.94.1453025721104; Sun, 17 Jan 2016 02:15:21 -0800 (PST) |
| In-Reply-To | <n7fo7q$dso$1@news2.informatik.uni-stuttgart.de> |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.20+ |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| Xref | csiph.com comp.lang.python:101839 |
Show key headers only | View raw
On Sun, Jan 17, 2016 at 8:51 PM, Ulli Horlacher
<framstag@rus.uni-stuttgart.de> wrote:
> I have seen at several places "x == None" and "x is None" within
> if-statements.
> What is the difference?
> Which term should I prefer and why?
tl;dr: Prefer "x is None" as a check.
The two checks have slightly different meaning, and almost always you
want the identity check. "x is None" is asking the identity question
"does the name x refer to the exact same object as the singleton
None", but "x == None" is asking the value question "does the object
referred to by x want to consider itself equal to None". For instance:
class NoneLike(object):
def __eq__(self, other):
if other is None: return True
return isinstance(other, NoneLike)
>>> x = NoneLike()
>>> x == None
True
>>> x is None
False
The object referred to as x is not None itself, but it has decided to
call itself equal to None. This is incredibly unusual, and will
generally not be what you want.
As an additional bonus, the identity check is faster. The equality
check has to ask the object if it's equal or not, but the identity
check just says "same object? Y/N", which is generally going to be a
cheap check (in CPython, the objects' pointers can be compared).
But the main reason is semantic - you generally do not _want_ the
possibility of objects comparing equal to None. And if you actually
do, you'd better have some kind of comment there, or someone will come
along and change your code to the more normal "is None".
ChrisA
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
"x == None" vs "x is None" Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2016-01-17 09:51 +0000
Re: "x == None" vs "x is None" Chris Angelico <rosuav@gmail.com> - 2016-01-17 21:15 +1100
Re: "x == None" vs "x is None" Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2016-01-17 11:05 +0000
Re: "x == None" vs "x is None" Peter Otten <__peter__@web.de> - 2016-01-17 12:26 +0100
Re: "x == None" vs "x is None" Chris Angelico <rosuav@gmail.com> - 2016-01-17 22:29 +1100
Re: "x == None" vs "x is None" <paul.hermeneutic@gmail.com> - 2016-01-17 11:01 -0700
Re: "x == None" vs "x is None" Random832 <random832@fastmail.com> - 2016-01-17 16:33 -0500
Re: "x == None" vs "x is None" Chris Angelico <rosuav@gmail.com> - 2016-01-18 08:38 +1100
Re: "x == None" vs "x is None" Ben Finney <ben+python@benfinney.id.au> - 2016-01-18 13:46 +1100
Re: "x == None" vs "x is None" fernando junior <fernandojr.ifcg@live.com> - 2016-01-19 14:20 -0800
csiph-web