我知道python的“ is”比较使用对象的ID进行比较,但是在比较与自身串联的字符串时,它的行为似乎不一致。最多20个字符(单个字符)返回True,然后返回False:
>>>'a'*20 is 'a'*20
True
>>>'a'*21 is 'a'*21
False
使用不同长度的字符串,似乎总字符串超过21的地方都会发生:
>>>'abcdefghijk'*2 is 'abcdefghijk'*2
False
>>>'abcdefghijk'*1 is 'abcdefghijk'*1
True
但这不适用于已经超过21个字符的字符串:
>>>'abcdefghijklmnopqrstuvwxyz'*1 is 'abcdefghijklmnopqrstuvwxyz'*1
True
python在做什么导致这种行为改变?
编辑:我正在使用Python 3.6.5