*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를 사용하여 키워드 인자들을 딕셔너리 형태로 받아 출력하고 있다.
이 파이썬의 기능은 잘 쓴다고 하였다.
생각 날 때마다 자주 볼 것이다.
댓글