강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

윤정희님의 프로필 이미지
윤정희

작성한 질문수

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

파이썬에서 함수의 매개변수 기본값을 설정할 때 주의해야 할 점은 무엇인가요?

해결된 질문

작성

·

22

1

파이썬에서 함수의 매개변수 기본값을 설정할 때 주의해야 할 점은 무엇인가요?

답변 2

1

Selena님의 프로필 이미지
Selena
지식공유자

안녕하세요. 셀레나입니다.

 

파이썬에서 변수는 값을 직접 저장하는 것이 아니라 객체를 참조(reference) 합니다.

할당(assignment)은 객체를 복사하는 과정이 아니라,
해당 객체를 가리키는 참조를 변수에 연결하는 과정입니다.

예를 들어, 하나의 리스트를 두 변수에 할당하면
두 변수는 동일한 객체를 참조하게 됩니다.

이 경우 한 변수에서 객체를 수정하면 다른 변수에서도 변경이 반영됩니다.

 

즉, 파이썬은 기본적으로 “값 복사”가 아니라 “참조 전달” 방식으로 동작하며,
이 특성이 얕은 복사 문제나 가변 객체 관련 이슈와 밀접하게 연결됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 윤정희님!

파이썬에서 함수의 매개변수 기본값을 설정할 때 몇 가지 주의해야 할 점이 있습니다:

  1. 변경 가능한 값의 기본값 사용: 리스트나 딕셔너리와 같은 변경 가능한 값을 매개변수 기본값으로 사용하지 않는 것이 좋습니다. 기본값은 함수가 정의될 때 한 번만 평가되며, 이후 호출될 때마다 동일한 객체를 사용하므로 의도치 않은 결과가 발생할 수 있습니다. 예를 들어:

    def func(a, b=[]): 
       b.append(a)
       return b
    print(func(1))  # 출력: [1]
    print(func(2))  # 출력: [1, 2] <- 이전 호출에서 변경된 리스트에 계속 추가됨
    

    이를 피하려면 None을 기본값으로 사용하고 함수 내에서 새로운 객체를 생성합니다:

    def func(a, b=None):
       if b is None:
           b = []
       b.append(a)
       return b
    
  2. 기본값의 평가 시점: 함수가 정의될 때 기본값이 평가되므로, 기본값이 시간이 흐르며 변할 것으로 예상하면 주의가 필요합니다.

  3. 기본값 위치: 기본값을 가지는 매개변수는 기본값이 없는 매개변수 뒤에 위치해야 합니다. 예를 들어:

    def func(a, b=5): 
       return a + b
    

    이는 허용되지만, 기본값이 없는 매개변수가 뒤에 오면 오류가 발생합니다.

관련하여 더 많은 정보를 원하시면 아래 유사 질문들을 참고해 보시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

윤정희님의 프로필 이미지
윤정희

작성한 질문수

질문하기