0.问题由来
在最近一些工具开发中,遇到这样一个bug,在debug中才发现问题所在,先上代码
d = {'id': None}
l = []
for i in range(1, 4):
d['id'] = i
l.append(d)
按照常理l最终值为:
[{'id': 1}, {'id': 2}, {'id': 3}]
然而实际值为:
[{'id': 3}, {'id': 3}, {'id': 3}]
问题分析:
在循环中,d相当于一个全局变量,d一旦更新,列表l中原有的d也会得到更新,所以导致了这样的情况出现;
1.正确姿势
l = []
for i in range(1, 4):
d = {'id': i}
l.append(d)
print(l)