Python字符串乘法与“ is”的比较不一致

时间:2019-04-24 17:30:38

标签: python string

我知道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

0 个答案:

没有答案