가변 인자 (Variable Arguments)
파이썬에서는 함수 정의 시에 인자의 개수를 정확히 지정하지 않고, 가변 개수의 인자를 받을 수 있습니다. 이를 위해 가변 인자를 사용합니다. 가변 인자는 *
를 붙여 선언한 다음, 인자의 이름을 지정합니다. 가변 인자는 튜플 형태로 전달됩니다.
다음은 가변 인자를 사용한 간단한 예제입니다.
def print_numbers(*args):
for number in args:
print(number)
print_numbers(1, 2, 3, 4, 5)
이 예제에서는 print_numbers
함수가 가변 인자 *args
를 받습니다. print_numbers
함수는 받은 인자들을 순회하면서 각각을 출력합니다. 따라서 print_numbers(1, 2, 3, 4, 5)
를 호출하면 1부터 5까지의 숫자가 차례대로 출력됩니다.
Unpacking
가변 인자를 사용하면 여러 개의 인자를 튜플 형태로 받을 수 있게 됩니다. 그러나 때로는 이미 튜플이나 리스트 형태로 저장된 데이터를 가변 인자로 넘기기가 불편할 수 있습니다. 이때 사용할 수 있는 것이 unpacking입니다.
Unpacking은 리스트나 튜플 등의 iterable 객체를 가변 인자로 전달하는 방법입니다. 가변 인자 앞에 *
를 붙여주면 파이썬은 iterable 객체를 자동으로 펼쳐서 가변 인자로 전달합니다.
다음은 unpacking을 사용한 예제 코드입니다.
numbers = [1, 2, 3, 4, 5]
print_numbers(*numbers)
위의 예제에서는 numbers
라는 리스트를 정의한 후에 *numbers
를 통해 unpacking하여 print_numbers
함수에 전달합니다. 이렇게 하면 리스트의 각 요소가 함수의 가변 인자로 전달됩니다. 결과적으로 print_numbers(1, 2, 3, 4, 5)
와 동일한 결과를 얻을 수 있습니다.
Unpacking은 여러 개의 인자를 한 번에 전달할 때도 유용합니다. 예를 들어, 다음과 같은 함수가 있다고 가정해봅시다.
def add_numbers(x, y, z):
return x + y + z
이 함수는 세 개의 인자를 받아서 합을 반환합니다. 만약 리스트나 튜플 형태로 이미 데이터가 저장되어 있다면 unpacking을 활용할 수 있습니다.
numbers = [1, 2, 3]
print(add_numbers(*numbers))
위의 코드에서 numbers
는 [1, 2, 3]
이라는 리스트입니다. *numbers
를 사용하여 리스트의 각 요소가 add_numbers
함수의 인자로 전달됩니다. 즉, add_numbers(1, 2, 3)
과 동일한 결과를 얻을 수 있습니다.
함수의 가변 인자와 unpacking은 파이썬에서 매우 유용한 기능입니다. 가변 인자를 활용하면 다양한 개수의 인자를 받을 수 있고, unpacking을 이용하면 이미 저장된 데이터를 편리하게 함수에 전달할 수 있습니다. 이러한 기능들을 적절히 활용하여 좀 더 유연하고 효율적인 코드를 작성할 수 있습니다.