Python에서는 *args 형태의 매개변수를 사용하여 키워드가 없는(non-keyworded) 가변 길이 인수 목록을 함수에 전달할 수 있습니다. 여기서 핵심은 별표(*) 기호입니다. 별표와 함께 'args'라는 단어를 붙이면, 해당 매개변수가 개수에 상관없이 여러 개의 위치 인수를 받을 수 있음을 의미합니다.
즉, 함수를 호출할 때 인수를 몇 개든 자유롭게 넘길 수 있으며, 함수 내부에서는 이 값들이 하나의 튜플(tuple)로 묶여 전달됩니다.
예제 코드
def multiply(*args):
y = 1
for num in args:
y *= num
print(y)
multiply(3, 7)
multiply(9, 8)
multiply(3, 4, 7)
multiply(5, 6, 10, 8)실행 결과
21 72 84 2400
코드 설명
위 예제의 multiply() 함수는 *args를 통해 전달된 모든 숫자를 곱하는 기능을 수행합니다.
- multiply(3, 7) → args는 (3, 7)이라는 튜플이 되어 3 × 7 = 21
- multiply(9, 8) → args는 (9, 8)이 되어 9 × 8 = 72
- multiply(3, 4, 7) → args는 (3, 4, 7)이 되어 3 × 4 × 7 = 84
- multiply(5, 6, 10, 8) → args는 (5, 6, 10, 8)이 되어 5 × 6 × 10 × 8 = 2400
이처럼 *args를 사용하면 호출 시점에 인수의 개수를 정하지 않아도 되므로, 유연하고 재사용성 높은 함수를 작성할 수 있습니다. 참고로 키워드 인수(key=value 형태)를 가변적으로 받고 싶다면 **kwargs를 사용하면 됩니다.