차이

2012-11-18 3 views
0

가능한 중복 :
What is the difference between LIST.append(1) and LIST = LIST + [1] (Python)차이

나는 특히 경우, 매개 변수가 함수에 전달되는 방법에 대한 의심과 자신의 가변성을 목록.

def add_list(p): 
    p = p + [1] 

def append_list(p): 
    p.append(1) 

p = [1, 2, 3] 

add_list(p) 
print p 

append_list(p) 
print p 

I는 얻을 출력 ... ... 다음 사항을 고려

[1, 2, 3] 
[1, 2, 3, 1] 

이유는 함수에에 추가 원래 목록 변경을 수행하지만 변경되지 않습니다 연산자를 사용하면 +?

+0

mutating을 추가합니다. 사본 추가. –

+0

짧은 답변 :'append()'는 ** in-place ** 목록을 변경하고'+'는 새 목록을 반환하지만 원래 목록에는 전혀 영향을 미치지 않습니다. –

답변

2

함수 내의 배정 연산자는 새 로컬 변수를 만듭니다. * add_list * 함수에서 p은 지역 변수입니다.