[파이썬] 함수의 가변 인자 전달 (*args, **kwargs)

파이썬에서는 함수에 가변 인자를 전달하는 방법으로 *args**kwargs를 사용할 수 있습니다. 이 기능을 사용하면 함수가 임의의 개수의 인자를 받을 수 있으며, 이를 활용하여 유연하고 동적인 함수를 작성할 수 있습니다.

가변 위치 인자 (*args)

가변 위치 인자는 함수 호출 시에 임의의 개수의 인자를 전달할 수 있습니다. 이러한 인자들은 튜플 형태로 함수 내부로 전달됩니다. argsarguments의 줄임말입니다.

가변 위치 인자는 함수 정의 시에 매개변수 이름 앞에 *를 붙여 표시합니다. 예를 들어, 다음과 같이 함수를 정의할 수 있습니다.

def my_function(*args):
    for arg in args:
        print(arg)

이제 my_function을 호출할 때 인자의 개수가 어떤 경우든지 처리할 수 있습니다.

my_function(1, 2, 3)  # 1, 2, 3 출력
my_function('hello', 'world')  # hello, world 출력
my_function()  # 아무것도 출력되지 않음

가변 키워드 인자 (**kwargs)

가변 키워드 인자는 함수 호출 시에 이름-값 쌍으로 이루어진 임의의 개수의 인자를 전달할 수 있습니다. 이러한 인자들은 딕셔너리 형태로 함수 내부로 전달됩니다. kwargskeyword arguments의 줄임말입니다.

가변 키워드 인자는 함수 정의 시에 매개변수 이름 앞에 **를 붙여 표시합니다. 예를 들어, 다음과 같이 함수를 정의할 수 있습니다.

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

이제 my_function을 호출할 때 이름-값 쌍으로 이루어진 인자들을 전달할 수 있습니다.

my_function(name='Alice', age=25)  # name Alice, age 25 출력
my_function(city='New York', country='USA')  # city New York, country USA 출력
my_function()  # 아무것도 출력되지 않음

가변 위치 인자와 가변 키워드 인자 함께 사용하기

함수 정의 시에 가변 위치 인자와 가변 키워드 인자를 함께 사용할 수도 있습니다. 이 경우, 위치 인자와 키워드 인자가 모두 전달될 수 있습니다.

def my_function(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(key, value)
my_function(1, 2, 3, name='Alice', age=25)  
# 1, 2, 3 출력
# name Alice, age 25 출력

가변 인자를 사용하면 함수를 더욱 유연하게 만들 수 있습니다. 이를 이용하여 다양한 상황에 대응할 수 있는 함수를 작성할 수 있습니다.


이외에도 가변 인자를 전달하는 방법에 대해 좀 더 자세히 알아보고 싶다면, Python Documentation을 참고하십시오.