如何在Python上确定ID?

如何在Python上确定ID?,python,Python,如何在Python上确定ID 我听说相同的字符串具有相同的ID,如下所示: >>>list1=[1,2,'aaa','bbb'] >>>list2=[3,4,'aaa','bbb'] >>>id(list1[2]) 12345 >>>id(list2[2]) 12345 但以下情况不符合规定: >>>list1=[1,2,'Hello World','bbb'] >>>list2=[3,

如何在Python上确定ID

我听说相同的字符串具有相同的ID,如下所示:

>>>list1=[1,2,'aaa','bbb']
>>>list2=[3,4,'aaa','bbb']
>>>id(list1[2])
12345
>>>id(list2[2])
12345
但以下情况不符合规定:

>>>list1=[1,2,'Hello World','bbb']
>>>list2=[3,4,'Hello World','bbb']
>>>id(list1[2])
12345
>>>id(list2[2])
12367
它们之间有什么不同

补充
可能的原因是,在第二个示例中,您使用了
id(lst2[2])
而不是
id(list2[2])
。但总的来说,我认为,由python的解释器来决定包含相同字符串的字符串对象是否实际上是相同的字符串对象


此外,本文还对这个问题进行了一些讨论和回答。

您对相同字符串具有相同id的假设是正确的

你能详细介绍一下你的代码吗?这就是我得到的:

>>> list2=[3,4,'aaa','bbb']
>>> list1=[1,2,'aaa','bbb']
>>> list2=[3,4,'aaa','bbb']
>>> id(list1[2])
4449536920
>>> id(list2[2])
4449536920

不,这不是答案。@A.J.我更新了答案。但是如果我的答案不正确,那哪一个是正确的呢?现在问题是:)@A.J.所以请提供正确的答案。链接值得投票。事实上,这是关于短字符串的自动插入。这几乎与字符串等不可变对象无关。你需要字符串的ID做什么?我只是想知道是什么不同:)另外,在发布口译员会话记录时,请从实际口译员会话复制粘贴,而不是制作输出。合成输出在关键方面经常是错误的。请给出一个可重复的例子。正如@Marcin所说,您的第二个代码段没有执行。您可能对
id
有错误的概念。它指向存储字符串的内存位置。请参阅:或“aaa”案例返回相同的ID。但“Hello world”案例没有,它有一个空间。在python解释器中检查它。id(“”)是一个贯穿始终的常量。但是id(“”)(两个空格)发生了变化
>>> list2=[3,4,'aaa','bbb']
>>> list1=[1,2,'aaa','bbb']
>>> list2=[3,4,'aaa','bbb']
>>> id(list1[2])
4449536920
>>> id(list2[2])
4449536920