2014-12-04 5 views

답변

5

ad 참조 같은 객체를 참조. 따라서 clear이면 "두 변수"에 대해 지워집니다.

개체의 ID를 인쇄하여 확인할 수 있습니다. 당신은 변수 자체가 아니라 객체에 대한 참조를 유지하기 때문에 당신이 그것을 복사 할 수있는 개체를 처리하는 경우 할당하여

>>> id(a) 
44988624L 
>>> id(d) 
44988624L 

복사 값 등 int 같은 기본적인 데이터 유형 만 가능하다.

당신은 할 수있는 그와

d = deque('abc') 
a = deque('abc') 

또는

>>> id(a) 
44988624L 
>>> id(d) 
44989352L 

을 초래하지만 당신은 다릅니다 두 개의 서로 다른 a에있는 개체와 d를 얻을 것이다

>>> import copy 
>>> d = copy.copy(a) 

와 당신이 그것을 사용한 후에.

1
>>> from copy import deepcopy 
>>> d = deque('abc') 
>>> a = deepcopy(d) 
>>> d.clear() 
>>> a 
deque(['a', 'b', 'c']) 

또는 사용할 수 deque's 내장 사본 기능. 당신은 같은 객체 그게 전부에 대한 참조를 제공했다


>>> d = deque('abc') 
>>> a = d.__copy__ 
>>> a 
<built-in method __copy__ of collections.deque object at 0x02437C70> 
>>> a = d.__copy__() 
>>> a 
deque(['a', 'b', 'c']) 
>>> d.clear() 
>>> a 
deque(['a', 'b', 'c']) 

왜 삭제 후 d 심지어 a가 지워지고 있었다. 이를 위해서는 deepcopy를 사용하여 object da으로 복사해야합니다. 어떤 당신을위한 복사 객체를 대신 그것을

>>> id(a) 
37976360 
>>> id(d) 
37976248 
4

라인 :

a = d 

복사본을 만들지 않습니다 - 그냥 동일한 개체에 대한 다른 이름을 만듭니다.

복사본을 생성하려면 다음을 수행하십시오

d = deque('abc') 
a = deque(d)