[Tutor] Need some clarification on this

Dave Angel davea at ieee.org
Sat Mar 19 19:17:48 CET 2011


On 01/-10/-28163 02:59 PM, Joel Goldstick wrote:
> 2011/3/19 Yaşar Arabacı<yasar11732 at gmail.com>
>
>>>>> a=5
>>>>> b=5
>>>>> a == b
>> True
>>>>> a is b
>> True
>>
>> My question is, why "a is b" is true. What I expected it to be is that, a
>> and b are different things with same value.
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>
> Oops.  I misread your post.  I (why I don't know) thought I saw a = 5, b =
> 4.
>
> a and b are names.  Python has an integer of 5 from a = 5, so it just refers
> to that same object with b.
>
>
>

Sometimes a particular implementation of Python will reuse the same 
object, if it's immutable.  So certain strings and certain integers may 
be reused, presumably to save some space.  But you cannot count on it.

If you tried the same thing with a value of 741, you'd probably get a 
different answer.  It's not time-efficient for Python to go hunting 
through all the existing objects to find a match, so this optimization 
is done pretty narrowly.

You seldom want to use 'is' on an integer or a string anyway.  Use == 
unless it really matters, which is usually either a custom object, or a 
singleton like True.

DaveA


More information about the Tutor mailing list