number_list = []
tmp={}
for i in range(3):
number = random.randint(10,20)
if number:
tmp['num']=number
print 'number is ',tmp['num']
print 'tmp id is',id(tmp)
number_list.append(tmp)
print number_list
以上代码的一次测试输出是:
number is 15
tmp id is 167069052
number is 12
tmp id is 167069052
number is 15
tmp id is 167069052
[{'num': 15}, {'num': 15}, {'num': 15}]
随机产生的三个数,结果是不一样的,但是最后防到list中的数字全是15.
由于tmp事先已经声明了,所以是新建了一个python字典对象
每次在for 中对该字典对象中的tmp['num'] 做修改,改变的是改字典的num键,即每次更改的是同一个tmp字典,
所以每次放进list中的对象其实是统一个,他们都指向一开始就声明的地址 167069052,所以最后list中的三个字典其实
是统一个字典,它们的值也就是最后一次修改后的值,即15.