[파이썬] 가변 인자와 함수 시그니처

가변 인자(variadic argument)는 함수의 매개변수가 가변적인 개수를 가질 수 있는 기능을 말합니다. 이는 함수를 호출할 때 원하는 개수의 인자를 전달할 수 있게 해주어 함수의 유연성과 확장성을 높여줍니다. 파이썬은 가변 인자를 다루기 위해 *args**kwargs라는 특별한 매개변수를 제공합니다.

가변 위치 인자 (*args)

가변 위치 인자는 함수를 호출할 때 인자들을 튜플 형태로 받아들입니다. 이 튜플은 * 연산자를 사용하여 함수 내부에서 여러 개의 매개변수로 분해할 수 있습니다. 아래는 가변 위치 인자를 사용하는 예제입니다.

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

my_function("apple", "banana", "cherry")

위의 예제에서 my_function은 가변 위치 인자 *args를 사용하여 호출될 때 전달된 모든 인자들을 튜플 args로 받아들입니다. args의 원소들은 반복문을 통해 하나씩 출력됩니다.

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

가변 키워드 인자는 함수를 호출할 때 인자들을 딕셔너리 형태로 받아들입니다. 이 딕셔너리는 ** 연산자를 사용하여 함수 내부에서 여러 개의 매개변수로 분해할 수 있습니다. 아래는 가변 키워드 인자를 사용하는 예제입니다.

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

my_function(fruit="apple", color="red", price=1.0)

위의 예제에서 my_function은 가변 키워드 인자 **kwargs를 사용하여 호출될 때 전달된 모든 인자들을 딕셔너리 kwargs로 받아들입니다. kwargs의 키와 값은 반복문을 통해 하나씩 출력됩니다.

가변 인자와 함수 시그니처

가변 인자를 사용하면 함수의 시그니처(signature)가 유연해지게 됩니다. 함수의 시그니처는 함수의 이름과 매개변수의 개수 및 타입을 나타내는 것으로, 함수를 호출하기 위한 정보를 제공합니다. 가변 인자를 사용하면 함수를 호출할 때 매개변수의 개수를 동적으로 제어할 수 있기 때문에 함수 시그니처가 고정되지 않습니다.

하지만 가변 인자의 사용은 신중하게 고려되어야 합니다. 많은 가변 인자를 사용하면 코드의 가독성이 저하될 수 있으며, 잘못된 인자를 전달할 경우 예외가 발생할 수 있습니다. 따라서 가변 인자를 사용할 때는 해당 함수의 사용 방법과 제약 사항을 명확히 문서화하여 사용자들이 적절한 값을 전달할 수 있도록 해야 합니다.

가변 인자와 함수 시그니처를 적절히 활용하면 코드의 유연성과 재사용성을 높일 수 있습니다. 하지만 신중한 사용과 문서화가 필요하며, 상황에 맞게 가변 인자를 적절히 사용하도록 합시다.