is implemented with id ?

Hans Mulder hansmu at xs4all.nl
Sat Nov 3 22:49:07 CET 2012


On 3/11/12 20:41:28, Aahz wrote:
> [got some free time, catching up to threads two months old]
> 
> In article <50475822$0$6867$e4fe514c at news2.news.xs4all.nl>,
> Hans Mulder  <hansmu at xs4all.nl> wrote:
>> On 5/09/12 15:19:47, Franck Ditter wrote:
>>>
>>> - I should have said that I work with Python 3. Does that matter ?
>>> - May I reformulate the queston : "a is b" and "id(a) == id(b)"
>>>   both mean : "a et b share the same physical address". Is that True ?
>>
>> Yes.
>>
>> Keep in mind, though, that in some implementation (e.g.  Jython), the
>> physical address may change during the life time of an object.
>>
>> It's usually phrased as "a and b are the same object".  If the object
>> is mutable, then changing a will also change b.  If a and b aren't
>> mutable, then it doesn't really matter whether they share a physical
>> address.
> 
> That last sentence is not quite true.  intern() is used to ensure that
> strings share a physical address to save memory.

That's a matter of perspective: in my book, the primary advantage of
working with interned strings is that I can use 'is' rather than '=='
to test for equality if I know my strings are interned.  The space
savings are minor; the time savings may be significant.

-- HansM


More information about the Python-list mailing list