Message257286
Interesting, short string literals usually are interned, but they are not interned in tuple literal.
>>> namespace = {}
>>> exec('a = ["abc123"]\ndef abc123(): pass', namespace)
>>> namespace['abc123'].__name__ is namespace['a'][0]
True
>>> exec('a = ("abc123",)\ndef abc123(): pass', namespace)
>>> namespace['abc123'].__name__ is namespace['a'][0]
False
>>> namespace['abc123'].__name__ == namespace['a'][0]
True
I think it would be better to change the compiler to always intern short string literals. And patching namedtuple will be not needed. |
|
Date |
User |
Action |
Args |
2016-01-01 12:23:49 | serhiy.storchaka | set | recipients:
+ serhiy.storchaka, brett.cannon, georg.brandl, rhettinger, ncoghlan, benjamin.peterson, yselivanov |
2016-01-01 12:23:49 | serhiy.storchaka | set | messageid: <1451651029.64.0.0931504424344.issue25981@psf.upfronthosting.co.za> |
2016-01-01 12:23:49 | serhiy.storchaka | link | issue25981 messages |
2016-01-01 12:23:49 | serhiy.storchaka | create | |
|