[파이썬] *args 와 **kwargs 란

args 와 *kwargs

Python에서 *args**kwargs 는 함수 정의 시 유용하게 사용되는 매개변수

*args : (positional) arguments

  • *args 는 함수에 가변 인자를 전달할 때 사용
  • * 이 중요, 뒤에 오는 args는 다른 이름이어도 상관 없다
  • 함수에 명시적으로 정의되지 않은 임의의 개수의 인자를 받을 수 있다
  • *args 는 튜플 형태로 전달된다
  • 함수 호출 시에 인자 리스트 뒤에 *args 를 사용하여 값을 전달한다
def add(*args):
    total = 0
    for num in args:
        total += num
    return total

print(add(1, 2, 3))  # 출력: 6
print(add(1, 2, 3, 4, 5))  # 출력: 15

**kwargs : keyword arguments

  • **kwargs 는 함수에 복수의 키워드 인자를 전달할 때 사용된다.
  • 함수에 명시적으로 정의되지 않은 키워드 인자를 받을 수 있다.
  • **kwargs 는 딕셔너리 형태로 전달된다
  • 함수 호출 시에 인자 리스트 뒤에 **kwargs 를 사용하여 값을 전달한다
def print_details(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_details(name="Alice", age=30, city="New York")
# 출력:
# name: Alice
# age: 30
# city: New York

args와 *kwargs 를 함께 사용

*args**kwargs 를 함께 사용하여 가변 개수의 위치 인자와 키워드 인자를 모두 처리할 수도 있다

def func_with_args_and_kwargs(*args, **kwargs):
    print("Positional arguments:")
    for arg in args:
        print(arg)

    print("Keyword arguments:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

func_with_args_and_kwargs(1, 2, 3, name="Alice", age=30)
# 출력:
# Positional arguments:
# 1
# 2
# 3
# Keyword arguments:
# name: Alice
# age: 30

links

social