*args는 파이썬에서 가변 인자(variable-length argument)를 받을 때 사용하는 구문입니다. 함수에 전달된 인자의 개수가 미리 정해지지 않았거나, 동적으로 변화할 때 유용하게 사용할 수 있습니다. 이 글에서는 *args의 사용법과 다양한 예시를 통해 그 의미와 활용 방법을 설명하겠습니다.
1. *args의 기본 개념
*args는 함수 정의에서 튜플(tuple) 형태로 인자를 받습니다. 즉, 함수 호출 시 여러 개의 위치 인자를 args라는 튜플로 묶어서 함수 내부로 전달합니다. 이 튜플을 통해 여러 인자를 순차적으로 처리할 수 있습니다.
예시: 기본적인 사용
def example_function(*args):
for arg in args:
print(arg)
# 함수 호출 시 여러 인자 전달
example_function(1, 2, 3)
위 코드에서는 example_function 함수가 *args로 여러 인자를 받아서 처리하는 예시입니다. 출력 결과는 다음과 같습니다:
1
2
3
2. *args와 위치 인자
*args는 위치 인자(positional arguments)를 받습니다. 함수 호출 시 인자들이 순서대로 처리되기 때문에, 인자의 개수나 값이 동적으로 변할 때 유용합니다.
예시: 위치 인자와 *args
def example_function(a, b, *args):
print(a, b)
print(args)
# 함수 호출
example_function(1, 2, 3, 4, 5)
위 코드에서는 a와 b는 명시적인 인자로 받고, 나머지 값들은 *args로 처리합니다. 출력 결과는 다음과 같습니다:
1 2
(3, 4, 5)
3. *args와 기본값 인자
*args는 기본값을 갖는 인자와 함께 사용할 수 있습니다. 그러나 *args는 항상 인자 목록의 끝에 위치해야 합니다. 즉, 기본값을 가진 인자들은 *args보다 먼저 정의되어야 합니다.
예시: 기본값 인자와 *args
def example_function(a, b=2, *args, c=5):
print(a, b, c)
print(args)
# 함수 호출
example_function(1, 3, 4, 5, 6)
이 코드에서는 기본값을 가진 인자 b와 c를 사용하며, *args는 나머지 인자들을 튜플로 받아 처리합니다. 출력 결과는 다음과 같습니다:
1 3 5
(4, 5, 6)
4. *args와 **kwargs 비교
<p*args는 위치 인자만 받는 반면, **kwargs는 키워드 인자(key-value pairs)를 받습니다. 이 두 가지는 함께 사용할 수 있으며, 각각의 목적에 맞게 유연하게 인자를 처리할 수 있습니다.
예시: *args와 **kwargs 함께 사용하기
def example_function(a, b, *args, **kwargs):
print(a, b)
print(args)
print(kwargs)
# 함수 호출
example_function(1, 2, 3, 4, 5, x=10, y=20)
위 코드는 *args와 **kwargs를 동시에 사용하는 예시입니다. *args는 위치 인자를, **kwargs는 키워드 인자를 받습니다. 출력 결과는 다음과 같습니다:
1 2
(3, 4, 5)
{'x': 10, 'y': 20}
5. *args 사용 시 주의점
*args는 위치 인자만 받으므로, 순서대로 인자를 받는다는 점을 기억해야 합니다. 또한 *args는 꼭 마지막에 위치해야 하며, 그 뒤에 **kwargs를 사용하는 것이 일반적입니다.
결론
*args는 가변 개수의 위치 인자를 받아서 처리할 수 있게 해주는 파이썬의 기능입니다. 이를 통해 여러 개의 인자를 유연하게 처리할 수 있으며, 기본값을 가진 인자나 키워드 인자와도 함께 사용할 수 있습니다. *args를 적절히 활용하면 더욱 동적이고 유연한 함수 정의가 가능합니다.