어떤 함수는 호출하는 쪽에선 몇 개의 인수를 넘겨줄지 모르는 경우가 있다. 이럴 경우에 사용되는 것이 가변 개수 인자 기능으로써 함수는 넘어온 인자들을 묶어서 단일 튜플로 받는다.
예를 들어 입력 인자들 중 짝수의 개수를 구하는 함수를 작성해야 하는데 몇 개의 입력이 들어올 지는 모른다고 가정하자. 인자들을 묶어서 한 개의 리스트를 받는 방식을 먼저 생각해 볼 수 있겠다.
def count_even(lst):cnt = 0for v in lst:if v%2==0:cnt +=1return cnt>>> count_even([1,2,3,4,5,6,7])3>>> count_even([11,22,33])1 |
이런 식으로 하나의 입력 인수를 받되 리스트 요소의 개수는 그때 그때 변할 수 있겠다.
하지만 이런 경우에 있어서 좀 더 일반적인 해법은 가변 개수 인수를 받는 것이다. 가변 개수 인자를 지정할 때 함수의 정의부에서 변수 앞에 별표(*)를 붙인다.
>>> def count_even(*n):cnt = 0for v in n:if v%2==0:cnt +=1return cnt>>> count_even(11,22,33)1>>> count_even(1,2,3,4,5,6,7)3 |
앞의 경우와 다르게 함수를 호출할 때 콤마로 구분된 입력 인자를 몇 개라도 입력할 수 있다는 것이다. 함수 내부에서는 이들 인자들을 요소로 갖는 튜플이 변수 n에 넘어오게 된다. 즉 type(n)은 tuple 이다.
한 가지 주의할 점은 일반 인자와 가변 인자가 동시에 오는 경우 반드시 가변 인자는 일반 인자 뒤에 와야 한다는 점이다. 또한 가변 인자는 단 하나만 사용할 수 있다는 것도 유의해야 한다.
>>> def f1(a, *b): # 정상>>> def f2(a, *b, c): # 오류 - 가변 인자 뒤에 일반 인자가 올 수 없다.>>> def f3(*a, *b): #오류 - 가변 인자는 하나만 사용 가능>>> def f4(a, b, *c) # 정상 |
이러한 사항에 주의해서 함수를 작성해야 한다.
'프로그래밍언어.Lib > 파이썬' 카테고리의 다른 글
파이썬의 키워드 인자 (keyword parameter) (0) | 2015.05.27 |
---|---|
파이썬 함수의 기본값 인자 (default parameter) (0) | 2015.05.27 |
파이썬 함수의 일반 인자와 반환값 (0) | 2015.05.27 |
파이썬의 함수(function) 정의와 호출 (0) | 2015.05.27 |
파이썬의 continue 명령 (0) | 2015.05.27 |