inflearn logo
강의

講義

知識共有

【超初心者】 【累計5,000名以上】 Pythonプログラミング基礎完成ロードマップ

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

解決済みの質問

95

wjdgml9120

投稿した質問数 3

1

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

python 머신러닝 빅데이터 인공지능(ai) ax(에이전트-경험)

回答 2

1

Selena

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

 

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

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

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

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

 

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

0

communityai8509

안녕하세요, 인프런 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
    

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

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

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

기술 제안서 작성을 위한 Skills 구축

0

8

1

2.2 게이트웨이 리스타트 에러

0

2

1

install cursor command 관련

0

9

2

커서도 프로 요금제(유료 버전)이 필요하네요

0

10

2

ACE Music 사이트 관련해서 오류가 있습니다.

0

7

1

섹션4 퀴즈 오타있어요.

0

5

0

loop is not defined

0

9

1

slack 알림 연동 강의 관련

1

13

2

가상환경 설정이 안됩니다

0

11

0

파이썬 문법과 기본 개념을 학습한 이후에는 어떤 방향으로 심화 학습을 하는 것이 좋을지 궁금합니다.

1

97

1

리스트를 복사할 때 a = b 와 a = b[:] 의 차이는 무엇인가요?

1

111

1

파이썬에서 객체의 참조(reference)와 할당(assignment)의 차이

2

131

1

얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)의 차이

2

314

2

변수 선언에 관련한 질문.

1

115

2

for-else는 언제 쓰나요?

1

104

2

요즘 바이브코딩이 대세인데 파이썬을 배워야하는 이유가 뭘까요?

1

314

1

코드에서 오류를 찾는 팁이 있을까요?

2

97

2

순회 중 리스트 수정은 왜 위험한지 궁금합니다.

1

103

2

range함수 관련

2

136

1

포맷팅 질문

2

73

1

if 질문

2

103

1

set 질문

2

81

2

딕셔너리 반복자 질문

2

74

1

클래스 질문

2

76

1