"Fred" == Fred L Drake, Jr firstname.lastname@example.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
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.