关于 python 的内存机制

先看一段代码

L = [1,2,3]
dic_ = {}
L2 = []
for i in L:
    dic_['sn'] = i
    L2.append(dic_)
print(L2)

输出

[{'sn': 3}, {'sn': 3}, {'sn': 3}]

为什么这样?因为这个 dic_ 自始至终 都只用了一块内存来存储这个值,而对 dic_ 这个存储的变量进行操作时,必然会影响到 L2 里面的值,就像这样

>>> a = [1,2]
>>> b = a
>>> b
[1, 2]
>>> a.pop()
2
>>> a
[1]
>>> b
[1]
>>> 

a 和 b 共用一块内存,所以对 a 变量进行操作就影响到了 b,一个比喻说的很好:python 中的变量赋值相当于向内存上贴标签

你可能感兴趣的:(python3)