【发布时间】:2016-08-14 05:36:30
【问题描述】:
我将一个值存储在一个变量中,并将相同的值存储在另一个变量中,然后它为两个变量提供相同的 id。但是如果我将一个列表分配给一个变量,而将同一个列表分配给另一个变量,那么 ID 不同,为什么?
我的示例程序是:
>>> x=10
>>> y=10
>>> id(x)
21122368
>>> id(y)
21122368
>>> x=[1,2,3]
>>> y=[1,2,3]
>>> id(x)
35525896
>>> id(y)
35527736
【问题讨论】:
-
因为它是一个不同的列表,你在其中放置了相同的内容。
-
整数是不可变的,因此无论是否重用都没有区别。然而,列表是可变的,并且必须是单独的实例才能提供预期的行为。
-
它可能是数十个(字面意思)类似问题的重复。
-
我忘了提,而 Python 程序员可能需要知道 object 的内存位置(注意我没有写 variable ),因此在语言中包含
id(),它们通常不会。 -
如果是这种情况,您所说的不可变和 nutable 的行为会有所不同,字符串也是不可变的,但对于字符串,我分配的内存位置相同
标签: python