Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #52350 > unrolled thread
| Started by | Gary Herron <gary.herron@islandtraining.com> |
|---|---|
| First post | 2013-08-10 20:30 -0700 |
| Last post | 2013-08-10 20:30 -0700 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.python
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: Python Basic Doubt Gary Herron <gary.herron@islandtraining.com> - 2013-08-10 20:30 -0700
| From | Gary Herron <gary.herron@islandtraining.com> |
|---|---|
| Date | 2013-08-10 20:30 -0700 |
| Subject | Re: Python Basic Doubt |
| Message-ID | <mailman.457.1376191825.1251.python-list@python.org> |
[Multipart message — attachments visible in raw view] — view raw
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@tim.thechases.com <mailto:python.list@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
>
>
>
>
>
>
Back to top | Article view | comp.lang.python
csiph-web