append는 리스트를 수정하고 None을 반환한다.
>>> t3 = t1 + [4]
>>> t1
[1, 2, 3]
>>> t3
[1, 2, 3, 4]
+ 연산자는 새로운 리스트를 생성하므로 원본 리스트는 변경되지 않는다.
리스트를 수정하는 함수를 작성해야 할 때 이런 차이는 매우 중요하다. 예를 들어 다음 함수는 리스트의 처음(head)을 삭제하지 않는다.
def bad_delete_head(t):
t = t[1:] # 틀렸음!
슬라이스 연산자는 새로운 리스트를 생성하고, 할당문은 t가 새로 만든 리스트를 참조하게 해버리는데, 이렇게 하면 호출자에는 영향을 주지 않는다.
>>> t4 = [1, 2, 3]
>>> bad_delete_head(t4)
>>> t4
[1, 2, 3]