Python에서 가변 객체(mutable)를 함수의 기본 인자값으로 사용하면 발생하는 문제는?
보통 Stack Overflow해설
def func(lst=[])처럼 가변 객체를 기본값으로 사용하면, 리스트가 함수 정의 시점에 한 번만 생성됩니다. 이후 호출에서 같은 리스트를 공유하므로 lst.append(1)이 누적됩니다. 해결책은 기본값을 None으로 두고 함수 내부에서 새 리스트를 생성하는 것입니다.
def func(lst=[])처럼 가변 객체를 기본값으로 사용하면, 리스트가 함수 정의 시점에 한 번만 생성됩니다. 이후 호출에서 같은 리스트를 공유하므로 lst.append(1)이 누적됩니다. 해결책은 기본값을 None으로 두고 함수 내부에서 새 리스트를 생성하는 것입니다.