가변 인자를 적용해 profile() 함수를 다시 작성해 봅시다. 프로그래밍 언어를 language로 받고 앞에 *를 넣어 가변 인자로 정의합니다. 그리고 전달값을 출력할 때 가변 인자로 받은 전달값을 정말 튜플로 인식하는지 확인할 수 있게 type()을 사용해 보겠습니다.
def profile(name, age, *language):
print("이름 : {0}\t나이 : {1}\t".format(name, age), end=" ")
print(language, type(language))
# 자바스크립트 추가
profile("찰리", 20, "파이썬", "자바", "C", "C++", "C#", "자바스크립트")
profile("루시", 25, "코틀린", "스위프트")
실행결과 |
이름 : 찰리 나이 : 20 ('파이썬', '자바', 'C', 'C++', 'C#', '자바스크립트') <class 'tuple'> 이름 : 루시 나이 : 25 ('코틀린', '스위프트') <class 'tuple'> |
실행결과를 보면 전달한 값을 제대로 출력합니다. 또한, language의 값도 튜플임을 확인할 수 있습니다. 이처럼 가변 인자를 사용하면, 함수는 매개변수로 전달값을 순서대로 받고 남은 전달값이 몇 개든지 상관없이 묶어서 튜플로 처리합니다. 그래서 호출할 때마다 전달값의 개수가 달라져도 문제없습니다.