(Python) Using the Python args Variable in Function Definitions

Kepler·2020년 2월 1일
0

Python

목록 보기
5/12

When to use *args :

넘겨줄 arguments의 개수가 매번 변해도 실행할 수 있는 함수를 만들 때, 가변 인수(variable argument)를 사용한다. (인수가 0이라도 수백가지라도 상관없다) *args는 그 중에서도, positional arguments에 사용하는 키워드이다.

* 는 iterables를 unpacking할 때 사용하는 키워드이다. iterables란 member를 하나씩 차례대로 반환하는 객체, 또는 for문을 통하여 순차적 접근이 가능한 객체를 뜻하며, 대표적으로는 list, str, tuple, range, set, dict 이 있다.

예제에서 parameter를 *args로 입력했을때와, 그렇지 않은 경우를 비교해보자

예제1) parameter가 변수 일때.

image.png

위의 예제에서는 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를 변수로 지정하는 경우는, 항상 변수를 정의하고나서야 함수를 사용할수 있다.

예제2) parameter가 *args일 때.

image.png

예제1과 달리, 변수를 지정하지 않고도 my_sum을 사용할 수 있다.

Bear in mind that the iterable object you’ll get using the unpacking operator * is not a list but a tuple.

https://realpython.com/python-kwargs-and-args/

profile
🔰

0개의 댓글