포스트

Python에서 *args와 **kwargs의 활용

무엇이 args와 kwargs인가?

*args**kwargs는 Python 프로그래밍에서 매개변수(parameter)를 유연하게 관리하는 방법입니다. *args는 위치 인자(variable-length positional arguments)를 튜플로 받고, **kwargs는 키워드 인자(keyword arguments)를 딕셔너리로 받습니다.

*args의 작동 원리

*args는 함수에 몇 개의 위치 인자를 전달할지 모를 때 사용합니다. 예를 들어, 여러 숫자의 평균을 구하는 함수를 만들 때 이를 활용할 수 있습니다.

1
2
def average(*nums):
    return sum(nums) / len(nums)

여기서 *nums는 받은 모든 위치 인자를 nums 튜플에 저장합니다.

예제

1
2
print(average(1, 2, 3))  # 결과: 2.0
print(average(10, 20, 30, 40))  # 결과: 25.0

**kwargs의 작동 원리

**kwargs는 함수에 여러 키워드 인자를 전달할 수 있게 해줍니다. 예를 들어, 사람의 정보를 출력하는 함수에서 활용할 수 있습니다.

1
2
3
def print_info(**details):
    for key, value in details.items():
        print(f"{key}: {value}")

예제

1
print_info(name="John", age=30, country="USA")

이 함수는 다음과 같은 출력을 만듭니다:

1
2
3
name: John
age: 30
country: USA

args와 kwargs를 함께 사용하기

두 개를 함께 사용할 수도 있습니다만, 순서에 주의해야 합니다. 일반적인 순서는 일반 인자, *args, 그리고 **kwargs입니다.

1
2
def function(arg1, *args, **kwargs):
    pass

주의사항

  • 함수 선언에서 *args**kwargs보다 먼저 나와야 합니다.
  • ***는 실제로 매개변수 이름에 포함되지 않습니다. 이것들은 위치 인자와 키워드 인자를 각각 튜플과 딕셔너리로 묶을 것임을 Python에게 알려주는 역할을 합니다.

이러한 유연성 덕분에 Python에서는 함수를 매우 다양하게 활용할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.