Python 함수에서 *args 및 **kwargs를 사용하는 방법
Python의 *args 및 **kwargs를 마스터하세요. 동적 위치 및 키워드 인수를 사용하여 유연한 함수를 작성하고, 컬렉션을 압축 해제하고, 래퍼 함수를 빌드하는 방법을 알아보세요.
개요
Python에서는 가변 개수의 인수를 받아들일 수 있는 함수를 디자인해야 하는 경우가 많습니다. 예를 들어 임의 개수의 정수 합계를 계산하는 함수 또는 다양한 필드로 메타데이터를 기록하는 함수가 있습니다. 사용자에게 목록이나 사전을 전달하도록 강요하는 대신 Python은 `*args`와 `**kwargs`라는 두 가지 특수 기호를 제공합니다.
`*args` 구문을 사용하면 함수가 원하는 수의 위치 인수를 허용할 수 있습니다. 단일 별표 '*'는 압축 해제 연산자 역할을 합니다. 함수 정의에 배치되면 추가 위치 인수를 'args'라는 튜플로 수집합니다. 이를 통해 입력 값을 반복하고, 계산을 실행하고, 다른 함수에 쉽게 전달할 수 있습니다.
반면에 `**kwargs` 구문을 사용하면 함수가 키워드(이름이 지정된) 인수를 원하는 수만큼 허용할 수 있습니다. 이중 별표 `**`는 이러한 인수를 `kwargs`라는 사전에 수집합니다. 이는 선택적 구성, 스타일 인수 또는 데이터베이스 속성을 전달하는 데 매우 유용합니다. 기억하세요. 'args'와 'kwargs'라는 이름은 관례입니다. 실제 기능은 단일 및 이중 별표에 의해 결정됩니다.
코드 및 실행 출력
이 코드는 *args를 사용하여 변수 숫자를 합산하고 **kwargs를 사용하여 사용자 프로필을 인쇄하고 두 가지를 단일 함수로 결합하는 방법을 보여줍니다.
def sum_all(*args):
print("args type:", type(args).__name__)
return sum(args)
print("Sum (1, 2, 3):", sum_all(1, 2, 3))
print("Sum (10, 20):", sum_all(10, 20))
def print_profile(**kwargs):
print("kwargs type:", type(kwargs).__name__)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_profile(name="Bob", role="developer", country="US")
def master_function(first, *args, **kwargs):
print(f"First argument: {first}")
print(f"Additional positional args: {args}")
print(f"Keyword args: {kwargs}")
master_function("hello", 1, 2, 3, debug=True, user_id=42)args type: tuple
Sum (1, 2, 3): 6
args type: tuple
Sum (10, 20): 30
kwargs type: dict
name: Bob
role: developer
country: US
First argument: hello
Additional positional args: (1, 2, 3)
Keyword args: {'debug': True, 'user_id': 42}단계별 구현
- 위치 인수를 튜플로 수집하려면 매개변수(예: *args) 앞에 별표 하나를 사용하세요.
- 키워드 인수를 사전에 수집하려면 매개변수(예: **kwargs) 앞에 이중 별표를 사용하세요.
- 표준 매개변수, *args, 키워드 전용 매개변수, **kwargs 등 올바른 매개변수 순서를 유지하세요.
- *iterable 또는 **dictionary를 전달하여 함수를 호출할 때 압축 풀기 구문을 사용하세요.
자주 묻는 질문
"args"와 "kwargs"라는 이름을 사용해야 합니까?
아니요, 이는 표준 커뮤니티 규칙입니다. * 및 ** 접두사만 구문상 필요합니다. *values 및 **options를 작성할 수 있지만 가독성을 위해 *args 및 **kwargs를 고수하는 것이 좋습니다.
함수를 정의할 때 올바른 순서는 무엇입니까?
함수 시그니처에서 올바른 인수 순서는 위치 인수, *args, 키워드 전용 인수, 마지막으로 **kwargs입니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 루프
Python 루프를 사용하여 데이터를 반복하는 방법을 알아보세요. 대화형 예제를 통해 for 루프, while 루프, 중단, 계속 및 루프 모범 사례를 마스터하세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.