is implemented with id ?
aahz at pythoncraft.com
Sun Nov 4 06:12:10 CET 2012
In article <50959154$0$6880$e4fe514c at news2.news.xs4all.nl>,
Hans Mulder <hansmu at xs4all.nl> wrote:
>On 3/11/12 20:41:28, Aahz wrote:
>> 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 ?
>>> 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
>> 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.
As others have pointed out, using ``is`` with strings is a Bad Habit
likely leading to nasty, hard-to-find bugs.
intern() costs time, but saves considerable space in any application
with lots of duplicate computed strings (hundreds of megabytes in some
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
"....Normal is what cuts off your sixth finger and your tail..." --Siobhan
More information about the Python-list