>>> A = {'name':'apple','color':'red'}
>>> B = A
>>> A
{'color': 'red', 'name': 'apple'}
>>> B
{'color': 'red', 'name': 'apple'}
>>> B['color']
'red'
>>> B['color'] = 'green'
>>> B
{'color': 'green', 'name': 'apple'}
>>> A
{'color': 'green', 'name': 'apple'}
헐
원인은
>>> A = {'name':'apple','color':'red'}
>>> B = A
>>> print hex(id(A)), hex(id(B))
0x30d2bd8L 0x30d2bd8L
B = A 에서 어드레스까지 그대로 복사하는바람에,
결국 같은 포인터.
이럴때는
import copy
해서
B = copy.copy(A)
B = copy.deepcopy(A)
이렇게 쓰면 된다
>>> B = copy.copy(A)
>>> print hex(id(A)), hex(id(B))
0x30d2bd8L 0x2e68478L
다른 어드레스에 보존 되어있음을 알 수 있다.
copy, deepcopy 와의 차이점은
다음번에 필요해지면 알아보자.