python3 dict.copy 仍然只创建浅拷贝吗?

Ste*_*lez 2 python deep-copy

阅读了一些地方(包括这里)之后:Understanding dict.copy() - 浅还是深?

它声称 dict.copy 将创建一个浅拷贝,也称为对相同值的引用。但是,当我自己在 python3 repl 中使用它时,我只能按值获得副本?

a = {'one': 1, 'two': 2, 'three': 3}
b = a.copy()

print(a is b) # False
print(a == b) # True

a['one'] = 5
print(a) # {'one': 5, 'two': 2, 'three': 3}
print(b) # {'one': 1, 'two': 2, 'three': 3}
Run Code Online (Sandbox Code Playgroud)

这是否意味着浅拷贝和深拷贝不一定会影响不可变值?

Net*_*ave 5

整数是不可变的,引用对象时会出现问题,请检查这个类似的示例:

import copy
a = {'one': [], 'two': 2, 'three': 3}
b = a.copy()
c = copy.deepcopy(a)
print(a is b) # False
print(a == b) # True

a['one'].append(5)
print(a) # {'one': [5], 'two': 2, 'three': 3}
print(b) # {'one': [5], 'two': 2, 'three': 3}
print(c) # {'one': [], 'two': 2, 'three': 3}
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到它的现场直播