两个长字符串的Python'is'运算符

Vin*_*ent 5 python string-comparison string-interning python-internals

a = 'This is a very long string. This is a very long string. No?'
b = 'This is a very long string. This is a very long string. No?'

print(id(a), id(b))
print(a is b)
Run Code Online (Sandbox Code Playgroud)

在我的电脑上,结果是:

4467772080 4467772080
True
Run Code Online (Sandbox Code Playgroud)

据我所知,Python 只缓存短字符串。但是为什么这么长的字符串,它仍然只保留一个副本?其实我把它改成了一个很长的字符串(甚至比1024还长),ab仍然指向同一个字符串对象。请纠正我哪里错了?