In article <50959154$0$6880$e4fe5...@news2.news.xs4all.nl>, Hans Mulder <han...@xs4all.nl> wrote: >On 3/11/12 20:41:28, Aahz wrote: >> In article <50475822$0$6867$e4fe5...@news2.news.xs4all.nl>, >> Hans Mulder <han...@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.
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 cases). -- Aahz (a...@pythoncraft.com) <*> http://www.pythoncraft.com/ "....Normal is what cuts off your sixth finger and your tail..." --Siobhan -- http://mail.python.org/mailman/listinfo/python-list