有人能解释一下吗?所以我一直在使用Python中的id()命令,并发现了这个:
>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
除了一个问题,这对我来说很有意义:在将字符串“cat”赋给变量之前,它在内存中已经有一个地址。我可能只是不理解内存寻址的工作原理,但有人可以向我解释一下吗?或者至少告诉我应该阅读关于内存寻址的内容吗?
所以这一切都很好,但这让我更困惑了:
>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
这让我感到奇怪,因为'cat'是一个地址为5181152的字符串,但新的a有一个不同的地址。如果内存中有两个'cat'字符串,为什么id('cat')没有打印出两个地址呢?我的最后想法是连接可能与地址的改变有关,所以我尝试了这个:
>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
我本来会预测这些ID是一样的,但事实并非如此。有什么想法吗?