今天在实际脚本中遇到了一个python的变量赋值的坑,将字典从一个变量a赋值给另外一个变量b之后,修改了原始变量a的值,本意是保持b变量为原始值不动,结果修改a之后发现b的值也随着改变了,经过一番查询以及自己的测试之后,确认原来python中的list和dict数据类型采用的是浅拷贝。
列表的具体测试如下:
>>> a = ['1']
>>> b = a
>>> a.append('2')
>>> a
['1', '2']
>>> b
['1', '2'] 可以看到当改变a的值时,b的值也跟着一起改变了。 再看字典的例子:
>>> ar = {'x':'1','y':'2'}
>>> br = ar
>>> br
{'y': '2', 'x': '1'}
>>> ar['x'] = '3'
>>> br
{'y': '2', 'x': '3'}
>>> ar
{'y': '2', 'x': '3'} 其实还可以有更简单的验证方式,即查看变量的id值: