함수를 정의할 때 지정한 것보다 더 많은 인수를 전달해야 하는 경우가 종종 있습니다. 이처럼 개수가 정해지지 않은 인수를 가변 길이 인수(variable-length arguments)라고 하며, 필수 인수나 기본값 인수와 달리 함수 정의 시 별도의 이름을 붙이지 않습니다.
문법
키워드가 아닌(non-keyword) 가변 인수를 받는 함수의 기본 문법은 다음과 같습니다.
def functionname([formal_args] *var_args_tuple):
"function_docstring"
function_suite
return [expression]별표(*)는 키워드가 아닌 모든 가변 인수의 값을 담는 변수 이름 앞에 위치합니다. 이 변수는 튜플(tuple) 형태로 값을 저장하며, 함수 호출 시 추가 인수가 전달되지 않으면 빈 튜플로 남게 됩니다.
예제
다음은 가변 길이 인수를 활용하는 간단한 예제입니다.
#!/usr/bin/python3
# 함수 정의
def printinfo(arg1, *vartuple):
"전달된 가변 인수를 출력하는 함수"
print("Output is:")
print(arg1)
for var in vartuple:
print(var)
return
# printinfo 함수 호출
printinfo(10)
printinfo(70, 60, 50)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Output is:
10
Output is:
70
60
50첫 번째 호출에서는 필수 인수인 arg1에 10만 전달되었고, 두 번째 호출에서는 나머지 값들(60, 50)이 튜플 vartuple에 자동으로 저장되어 반복문으로 출력된 것을 확인할 수 있습니다.
참고: 키워드 가변 인수(**kwargs)
키워드 형태의 가변 인수를 처리하려면 별표 두 개(**kwargs)를 사용합니다. 이 경우 인수들은 튜플이 아닌 딕셔너리(dictionary) 형태로 전달되며, func(name="Kim", age=30)처럼 이름 붙은 인수를 임의의 개수만큼 받을 수 있습니다.