파이썬에서 함수를 정의할 때 사용되는 *args는 '가변 위치 매개변수(variable positional parameter)'라고 부르며, **kwargs는 '가변 키워드 매개변수(variable keyword parameter)'라고 합니다.
반면, 함수를 호출할 때 사용되는 *와 **는 각각 튜플이나 리스트 같은 반복 가능한(iterable) 자료구조와 딕셔너리를 개별 인자로 언패킹(unpacking)하여 전달하는 역할을 합니다.
예제
def func(a, b, c):
return a + b + c
args = (1, 2, 3)
print(func(*args))출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
6
*args는 튜플 (1, 2, 3)을 세 개의 개별 인자로 풀어서 func(1, 2, 3) 형태로 전달하므로, 함수는 1 + 2 + 3 = 6을 반환하게 됩니다. 마찬가지로 **를 사용하면 딕셔너리를 키워드 인자로 언패킹하여 전달할 수 있습니다.