On 2017-07-11, Albert-Jan Roskam <sjeik_ap...@hotmail.com> wrote: > From: Python-list <python-list-bounces+sjeik_appie=hotmail....@python.org> on > behalf of Dan Sommers <d...@tombstonezero.net> > Sent: Friday, July 7, 2017 2:46 AM > To: python-list@python.org > Subject: Re: Test 0 and false since false is 0 > > On Thu, 06 Jul 2017 19:29:00 -0700, Sayth Renshaw wrote: > >> I have tried or conditions of v == False etc but then the 0's being >> false also aren't moved. How can you check this at once? > > Maybe this will help: > > Python 3.5.3+ (default, Jun 7 2017, 23:23:48) > [GCC 6.3.0 20170516] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> False == 0 > True > >>> False is 0 > False > > > Just wondering: Is this 'is' test depending on an implementation > detail of cPython (small ints, I forgot how small 0-255 maybe, are > singletons)?
No. False is required to be a singleton. Therefore, if you want to know if <whatever> is the boolean object False, you can use '<whatever> is False' with predictable results.. Integer values are not required to be singletons, so you cannot depend on the value of <whatever> is 0, or <whatever> is 12345678. As you mention, in the current version(s) of CPython, small integer values are cached, but larger ones are not: $ python Python 2.7.12 (default, Jan 3 2017, 10:08:10) [GCC 4.9.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> x = 0 >>> x is 0 True >>> x = 12345678 >>> x is 12345678 False >>> That could change tomorrow. -- Grant Edwards grant.b.edwards Yow! PEGGY FLEMMING is at stealing BASKET BALLS to gmail.com feed the babies in VERMONT. -- https://mail.python.org/mailman/listinfo/python-list