python

TIL230330 *args와 **kwargs

베스트오버 2023. 3. 31.

*args와 **kwargs는 모두 함수의 매개변수를 유연하게 다룰 수 있도록 도와주는 파이썬의 기능

 

 

*args

  • *arguments의 줄임말
  • 함수를 호출할 때 여러 개의 인자를 받아들일 수 있도록 해준다.
  • 전달된 인자들은 튜플 형태로 함수 내부로 전달
  • 함수를 정의할 때 몇 개의 인자가 전달될 지 미리 예측할 수 없는 경우에 유용

 

*a 라고 써도 되고 *abc라고 써도 된다.

 

하지만 왠만하면 *args로 통일하도록 하자.

 

**kwargs

  • 딕셔너리 형태로 함수의 인자를 받아들일 수 있도록 해준다.
  • 키워드 인자를 사용하여 전달된 인자들은 딕셔너리 형태로 함수 내부로 전달
  • 함수를 정의할 때 인자의 이름을 미리 지정할 수 없는 경우에 유용

 

*args와  **kwargs를 함께 사용하면 함수를 더욱 유연하게 다룰 수 있다.

 

이때, *args는 위치 인자를, **kwargs는 키워드 인자를 받아들이도록 함수를 정의할 수 있다.

def my_func(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

my_func(1, 2, 3, name="Alice", age=25)

위 코드에서 my_func 함수의 매개변수로 위치 인자와 키워드 인자를 함께 사용하여 인자들을 전달하고 있다.

이때, *args를 사용하여 위치 인자들을 튜플 형태로 받고, **kwargs를 사용하여 키워드 인자들을 딕셔너리 형태로 받아 출력하고 있다.

 

이 파이썬의 기능은 잘 쓴다고 하였다.

생각 날 때마다 자주 볼 것이다.

댓글