Python 선택적 인수 이해
Min-jun Kim
Dev Intern · Leapcell

Key Takeaways
- 선택적 인수는 기본 매개변수 값을 통해 유연성을 제공합니다.
*args
및**kwargs
는 가변 길이 선택적 인수를 허용합니다.- 변경 가능한 객체를 기본값으로 사용하여 버그가 발생하는 것을 방지하세요.
Python에서 함수를 작성할 때 유연성은 종종 중요한 문제입니다. 이를 달성하는 데 도움이 되는 강력한 기능 중 하나는 선택적 인수입니다. 이를 통해 함수 호출자는 정의된 매개변수 수보다 적은 수의 인수를 제공하여 코드를 더 깔끔하고 사용자 친화적으로 만들 수 있습니다.
이 기사에서는 선택적 인수가 무엇인지, 효과적으로 사용하는 방법, 피해야 할 일반적인 함정에 대해 설명합니다.
선택적 인수란 무엇입니까?
선택적 인수는 함수가 호출될 때 필수가 아닌 함수 매개변수입니다. 이는 함수 서명에 기본값으로 정의됩니다. 선택적 인수에 대해 값이 전달되지 않으면 기본값이 사용됩니다.
기본 구문
def greet(name, greeting="Hello"): print(f"{greeting}, {name}!")
위의 예에서 greeting
은 선택적 인수입니다. 호출자가 값을 제공하지 않으면 "Hello"
가 사용됩니다.
greet("Alice") # 출력: Hello, Alice! greet("Bob", "Hi") # 출력: Hi, Bob!
선택적 인수 유형
1. 기본값
위에서 보듯이 함수 서명에서 직접 기본값을 설정할 수 있습니다.
def multiply(a, b=2): return a * b print(multiply(3)) # 출력: 6 print(multiply(3, 4)) # 출력: 12
2. *args
및 **kwargs
보다 동적인 선택적 인수를 위해 Python은 가변 길이 인수를 지원합니다.
*args
: 위치 인수를 튜플로 받아들입니다.**kwargs
: 키워드 인수를 사전으로 받아들입니다.
def report(*args, **kwargs): print("Positional:", args) print("Keyword:", kwargs) report(1, 2, 3, name="Alice", age=30) # 출력: # Positional: (1, 2, 3) # Keyword: {'name': 'Alice', 'age': 30}
이러한 인수는 입력을 유연하게 허용하려는 경우에 유용합니다.
키워드 전용 인수
함수 서명에서 *
뒤에 배치하여 특정 선택적 인수가 키워드로 전달되도록 강제할 수 있습니다.
def connect(host, port=80, *, timeout=30): print(f"Connecting to {host}:{port} with timeout {timeout}") connect("example.com", port=8080, timeout=10)
이 예에서 timeout
은 반드시 키워드 인수로 전달되어야 합니다.
일반적인 함정
1. 변경 가능한 기본값
변경 가능한 유형(예: 목록 또는 사전)을 기본값으로 사용하면 예기치 않은 동작이 발생할 수 있습니다.
def add_item(item, items=[]): items.append(item) return items print(add_item("apple")) # ['apple'] print(add_item("banana")) # ['apple', 'banana'] — 예상과 다를 수 있습니다!
해결 방법: None
을 기본값으로 사용하고 함수 내에서 초기화합니다.
def add_item(item, items=None): if items is None: items = [] items.append(item) return items
선택적 인수를 사용해야 하는 경우
선택적 인수는 다음과 같은 경우에 유용합니다.
- 대부분의 경우에 적합한 기본값을 제공하려는 경우.
- 자세한 호출 없이 사용자 정의를 허용하려는 경우.
- 유연한 인터페이스로 라이브러리 또는 API를 설계하는 경우.
결론
선택적 인수는 Python 유연성의 초석입니다. 기본값, *args
, **kwargs
및 키워드 전용 인수를 마스터하면 더욱 직관적이고 강력한 함수를 설계할 수 있습니다. 변경 가능한 기본값에 주의하고 항상 함수 서명의 가독성을 고려하세요.
FAQs
함수를 호출할 때 호출자가 생략할 수 있는 기본값이 있는 매개변수입니다.
함수 호출 간에 상태를 유지하여 의도치 않은 동작을 유발하기 때문입니다.
함수 정의에서 *
뒤에 배치합니다.
Leapcell은 Python 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하십시오. 요청이나 수수료는 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 쉬운 고 동시성 처리를 위한 자동 확장.
- 운영 오버헤드가 전혀 없습니다. 구축에만 집중하세요.
설명서에서 자세히 알아보세요!
X에서 팔로우하세요: @LeapcellHQ