이제 사람마다 정보를 한 줄로 출력합니다. 그런데 출력할 사람이 훨씬 더 많아지면 어떻게 될까요? 함수에는 최대 5개 언어를 전달값으로 받도록 정의되어 있습니다. 사람마다 다룰 줄 아는 언어 수가 다르므로 만약 5개 미만 언어를 다룬다면 나머지는 모두 빈 값으로 채워야 하는 번거로운 작업이 필요합니다. 하지만 더 큰 문제가 있습니다. 찰리가 너무 재미있다고 프로그래밍 언어를 하나 더 공부하면 어떻게 될까요? 이미 lang1부터 lang5까지 전달값 5개를 채웠는데 하나를 더 추가하려면 lang6을 넣어 함수 자체를 변경해야 합니다. 또한, 함수를 호출하는 모든 곳에서 lang6을 빈 값으로 채워야겠죠.
가변 인자(variable argument)를 사용하면 둘 다 간단하게 해결할 수 있습니다. 가변 인자는 개수가 변할 수 있는 인자를 의미합니다. 함수에서 전달값 앞에 *를 추가하면 가변 인자가 됩니다. 가변 인자는 전달값이 몇 개가 들어오든 묶어서 튜플로 인식합니다.
형식
def 함수명(전달값1, 전달값2, ..., *가변 인자): 실행할 문장1 실행할 문장2 ... return 반환값