넘겨줄 arguments의 개수가 매번 변해도 실행할 수 있는 함수를 만들 때, 가변 인수(variable argument)를 사용한다. (인수가 0이라도 수백가지라도 상관없다) *args는 그 중에서도, positional arguments에 사용하는 키워드이다.
위의 예제에서는 my_sum
이라는 함수에 my_int
라는 객체를 parameter로 정해 주었다.
함수 안에서 for in 문을 사용하였기 때문에, 이 객체는 iterable 이어야 한다.
list_to_use
라는 리스트를 정의하고 print
를 실행해 보면, 원하는 결과 6 이 도출된다.
하지만, 변수를 지정하지 않고, argument를 바로 설정하면 TypeError my_sum() takes 1 positional argument but 3 were given
이라는 에러가 뜬다.
이렇게 parameter를 변수로 지정하는 경우는, 항상 변수를 정의하고나서야 함수를 사용할수 있다.
예제1과 달리, 변수를 지정하지 않고도 my_sum
을 사용할 수 있다.
Bear in mind that the iterable object you’ll get using the unpacking operator * is not a list but a tuple.