[Python-Dev] Deprecating string exceptions (original) (raw)

Barry A. Warsaw barry@zope.com
Thu, 28 Mar 2002 00:02:16 -0500


"Fred" == Fred L Drake, Jr <fdrake@acm.org> writes:

Fred> Except of course that it *will* work in Python version
Fred> dating back to (I suspect) 1.0; that certainly was being
Fred> done in 1.2, though I don't think it was ever recommended
Fred> practice.

Fred> That it worked before string interning was an accident of
Fred> implementation: all the 'foo' in your example were in a
Fred> single code object, and so were ensured by the compiler to
Fred> be the same object (they shared an entry in the constants
Fred> table).  After string interning was added, it worked more
Fred> broadly because interning caused a single 'foo' to be
Fred> shared.

Of course the first 'foo' and the second 'foo' need not have such a close lexical relationship. And can't interning (I think) be disabled? (Though I'm sure no one does this.) Also, isn't interning limited to just identifier-like strings:

x = 'foo += boy' y = 'foo += boy' x is y 0

So, yes the simple example I gave will work, but the more general concept, that string exceptions cannot guaranteed to be caught by value, still holds.

-Barry