파이썬에서 함수 인수 기본값 조정할 수 있습니다.
이때 기본값 따라서 목록 유형을 설정할 때 주의해야 합니다.
아래 예를 살펴보겠습니다.
이 코드의 출력은 무엇입니까?
('car')
('car', 'banana')
('car', 'banana', 'pencil')
코드를 실행한 결과는 다음과 같습니다.
(항목은 배열에 누적됩니다.
)
주문 목록 빈 배열을 기본값으로 설정했습니다.
함수가 호출될 때마다 매번 빈 배열로 초기화되지 않고 값이 누적됩니다.
기본값으로 설정된 목록에는 변경 가능한 문자가 있기 때문입니다.
변경이란 값이 변경될 수 있음을 의미합니다.
(list, dict, set … 등은 변경 가능합니다.
)
(int, string, bool … 등은 변경할 수 없습니다.
)
파이썬의 모든 것은 객체입니다.
물론 함수도 객체입니다.
order_list는 add_item_to_order_list의 클래스 속성으로 존재합니다.
기능을 실행할 때마다
이 클래스 속성은 재생성되지 않지만 동일한 참조 범위를 공유합니다.
따라서 변경된 값을 계속 공유합니다.
위의 함수를 약간 수정해 보겠습니다.
기본값을 변경할 수 없는 값으로 변경 없음
값이 없음인 경우 예상 결과를 얻으려면 빈 배열을 할당하여 값을 변경해야 합니다.
('car')
('banana')
('pencil')
이 기사의 제목을 조금 명확히 할 수 있다면,
Python에서 휘발성 값을 기본값으로 설정할 때 주의해야 합니다.
나는 말할 수 있다.