파이썬에서 대 입문은 객체를 복사하지 않고 대상과 객체 사이에 바인딩을 만듭니다.
따라서 참조 하는 객체와 객체 dict2 = dict1
사이에 다른 바인딩이 발생 합니다.dict2
dict1
dict을 복사하려면을 사용할 수 있습니다 copy module
. 복사 모듈에는 두 가지 인터페이스가 있습니다.
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
얕은 복사와 깊은 복사의 차이점은 복합 객체 (목록 또는 클래스 인스턴스와 같은 다른 객체를 포함하는 객체)에만 해당됩니다.
얕은 사본 객체에 그것에 대한 참조가 원래 발견 삽입 (가능한 범위까지) 한 후 새로운 화합물 및 객체를 구성한다.
깊은 복사 객체가 원래의 발견의 그것으로 새로운 복합 객체하고, 반복적으로 삽입 복사본을 생성합니다.
예를 들어 python 2.7.9에서 :
>>> import copy
>>> a = [1,2,3,4,['a', 'b']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(5)
>>> a[4].append('c')
결과는 다음과 같습니다.
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>> d
[1, 2, 3, 4, ['a', 'b']]
dict1
와dict2
같은 DICT를 가리 킵니다.