Oscar Benjamin <oscar.j.benja...@gmail.com> wrote: >> What interning buys you is that "s == t" is an O(1) pointer compare >> if they are equal. But if s and t differ in the last character, >> __eq__ will still inspect every character. There is no way to tell >> Python "all strings are interned, if s is not t then s != t as well". >> > > I thought that if *both* strings were interned then a pointer > comparison could decide if they were unequal without needing to check > the characters. > > Have I misunderstood how intern() works? >
I don't think you've misunderstood how it work, but so far as I can see the code doesn't attempt to short circuit the "not equal but interned" case. The comparison code doesn't look at interning at all, it only looks for identity as a shortcut. -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list