import
copy
#原字典
dict1
=
{
1
:
1
,
'user'
:
'test'
,
'num'
: [
1
,
2
,
3
]};
#直接赋值
dict2
=
dict1;
dict3
=
dict1.copy();
dict4
=
copy.deepcopy(dict1);
dict1[
1
]
=
11
;
dict1[
'user'
]
=
'123'
;
dict1[
'num'
].remove(
1
);
print
(
'------------------------------------'
);
print
(
'原字典修改后:'
,dict1);
print
(
'直接赋值:'
,dict2);
print
(
'浅拷贝:'
,dict3);
print
(
'深拷贝:'
,dict4);
print
(
'------------------------------------'
);
输出:
原字典修改后:{
1
:
11
,
'user'
:
'123'
,
'num'
: [
2
,
3
]}
直接赋值:{
1
:
11
,
'user'
:
'123'
,
'num'
: [
2
,
3
]}
浅拷贝:{
1
:
1
,
'user'
:
'test'
,
'num'
: [
2
,
3
]}
深拷贝:{
1
:
1
,
'user'
:
'test'
,
'num'
: [
1
,
2
,
3
]}
可看出:
深拷贝中,全变了,与原字典无关。
赋值中,字典只是引用了原字典,所以象极C++的指针
浅拷贝中,可变的地址==原字典可变的地址