2016-09-21 2 views
1

기본 목록내가 파이썬 대화 형 쉘에서 아주 기본적인 코드를 시도 작동

>>> a=[1,2,3] 
>>> id(a) 
36194248L 
>>> a.append(4) 
>>> a 
[1, 2, 3, 4] 
>>> id(a) 
36194248L 
>>> 
>>> id([1,2,3]) 
36193288L 
>>> id([1,2,3].append(4)) 
506033800L 
>>> id([1,2,3].append(5)) 
506033800L 
>>> id([1,2,3].append(6)) 
506033800L 

Q : 내가 'A'라는 이름의 변수에 목록을 지정하고, 더 많은 가치를 추가하려고하면 아이디() 변경되지 않지만 같은 일을 변수에 할당하지 않고 시도하면 id()가 바뀝니다. 목록이 변경 가능하기 때문에 (즉, 동일한 메모리 주소에서 변경 허용) 왜이 동작이 표시됩니까?

답변

4

list.append() 반환 None 아닌 목록입니다.

당신은 그 개체에 대한 id() 결과를 얻고 있으며, None는 싱글이다. 그것은 항상은 주어진 파이썬 인터프리터 실행에 대해 동일합니다 : 만의 하나 개의 인스턴스가있을 것입니다 당신이 id(None) 호출

>>> id(None) 
4514447768 
>>> [].append(1) is None 
True 
>>> id([].append(1)) 
4514447768 
1

list.append 때문에 반환 None,.

관련 문제