
On Sun, Jan 16, 2022 at 6:34 PM Chris Angelico <rosuav@gmail.com> wrote:
def fun(): return "some string"
doesn't return the same string, unless it's iterned, which is an implementation detail, yes?
Not sure what you mean. That's a constant, so it'll always return the exact same object, surely?
I *think* that's only if it's interned -- and in any case, is a guarantee of the language, or an optimization? I tried to test with a longer string, and it was the same one, but then I found in this arbitrary post on the internet: ... in Python 3.7, this has been changed to 4096 characters ( I guess I haven't played with that since 3.7) -- I haven't actually tried with a string literal linger than 4096 chars :-) But this certainly doesn't: In [1]: def fun(): ...: return [1,2,3] ...: In [2]: l1 = fun() In [3]: l2 = fun() In [4]: l1 is l2 Out[4]: False So the issue is immutability and interning, not "literal display". My point is that a frozenset litteral could open the door to interning frozen sets, but that could probably be done anyway. And why? Are they heavily used in any code base? -CHB -- Christopher Barker, PhD (Chris) Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython