阅读了一些地方(包括这里)之后: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)
这是否意味着浅拷贝和深拷贝不一定会影响不可变值?
整数是不可变的,引用对象时会出现问题,请检查这个类似的示例:
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)
在这里你可以看到它的现场直播
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |