Python Basic Doubt
Gary Herron
gary.herron at islandtraining.com
Sat Aug 10 23:30:17 EDT 2013
On 08/10/2013 08:09 PM, Krishnan Shankar wrote:
> Thanks Tim,
>
> This takes me to one more question.
>
> 'is' operator is used to compare objects and it should not be used to
> compare data.
>
> So can it be compared with 'False'.
>
> i.e. Is this code possible
>
> if a is False:
> print 'Yes'
> if b is False:
> print 'No'
Depends on what you want. If you want to differentiate between a value
of False, and other false-like values 0, (), [], {} and so on, then you
need to be explicit with
if a is False:
Normally, that's not what you want, so you use
if not a:
to catch any of those false-like values.
>
> Because i recommended this should not be done. But my colleagues say
> it is correct.
>
> Regards,
> Krishnan
>
>
> On Sat, Aug 10, 2013 at 10:10 PM, Tim Chase
> <python.list at tim.thechases.com <mailto:python.list at tim.thechases.com>>
> wrote:
>
> On 2013-08-10 21:03, Krishnan Shankar wrote:
> > >>> a=10
> > >>> id(a)
> > 21665504
> > >>> b=a
> > >>> id(b)
> > 21665504
> > >>> c=10
> > >>> id(c)
> > 21665504
> >
> > I am actually assigning new value to c. But from the value of id()
> > all three variables take same location. With variables a and b it
> > is ok. But why c taking the same location?
>
> As an internal optimization, CPython caches small integer values
>
> >>> a = 256
> >>> b = 256
> >>> a is b
> True
> >>> a = 257
> >>> b = 257
> >>> a is b
> False
>
> Because it's an internal implementation detail, you shouldn't count
> on this behavior (Jython or Cython or IronPython may differ; or
> future versions of Python may cache a different range of numbers).
>
> Generally, if you are using the "is" operator to compare against
> anything other than None, you're doing it wrong. There are exceptions
> to this, but it takes knowing the particulars.
>
> -tkc
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130810/1e77ef41/attachment.html>
More information about the Python-list
mailing list