개요
함수를 구현할 때 선언한 매개변수의 개수에 맞추어, 호출할 때에도 개수에 맞게 파라미터를 넘겨주어야 한다. 이에 비해 가변인수는 임의 개수의 파라미터를 받는다. 매개변수의 이름 앞에 * 기호를 붙히면 이 자리 이후로 여러 개의 파라미터가 붙을 수 있다. 고로 가변인수는 매개변수 목록 중 가장 마지막에 배치되어야 한다.
1 2 3 4 5 6 7 8 9 | def intsum( * ints): sum = 0 for num in ints: sum + = num return sum print (intsum( 1 , 2 , 3 )) print (intsum( 5 , 7 , 9 , 11 , 13 )) print (intsum( 8 , 9 , 6 , 2 , 9 , 7 , 5 , 8 )) |
키워드 인수
함수의 매개변수 순서에 헷갈릴 필요없이 키워드를 통한 대입 형식으로 전달하는 방식을 지원하는데 Keyword argument라고 한다.
1 2 3 4 5 6 7 8 9 10 11 12 | def calcstep( * * args): begin = args[ 'begin' ] end = args[ 'end' ] step = args[ 'step' ] sum = 0 for num in range (begin, end + 1 , step): sum + = num return sum print ( "3 ~ 5 =" , calcstep(begin = 3 , end = 5 , step = 1 )) print ( "3 ~ 5 =" , calcstep(step = 1 , end = 5 , begin = 3 )) |
print()가 대표적으로 키워드 인수로 선언되어 있는 함수이다.
키워드 가변인수
키워드 인수를 가변 개수로 전달할 때는 ** 기호를 붙인다. 가변개의 키워드가 호출되므로 Key, Value 쌍으로 값이 전달되어야 한다. 그러므로 Dictionary 타입으로 전달된다.
1 2 3 4 5 6 7 8 9 10 11 12 | def calcstep( * * args): begin = args[ 'begin' ] end = args[ 'end' ] step = args[ 'step' ] sum = 0 for num in range (begin, end + 1 , step): sum + = num return sum print ( "3 ~ 5 =" , calcstep(begin = 3 , end = 5 , step = 1 )) print ( "3 ~ 5 =" , calcstep(step = 1 , end = 5 , begin = 3 )) |
복합 가변인수
일반 인수, 가변인수와 키워드 가변인수를 모두 사용할 수 있다. 순서에 유의해야 한다.
1 2 3 4 5 6 7 8 9 10 11 | def calcscore(name, * score, * * option): print (name) sum = 0 for s in score: sum + = s print ( "총점 :" , sum ) if (option[ 'avg' ] = = True ): print ( "평균 :" , sum / len (score)) calcscore( "김상형" , 88 , 99 , 77 , avg = True ) calcscore( "김한슬" , 99 , 98 , 95 , 89 , avg = False ) |