개요
함수를 구현할 때 선언한 매개변수의 개수에 맞추어, 호출할 때에도 개수에 맞게 파라미터를 넘겨주어야 한다. 이에 비해 가변인수는 임의 개수의 파라미터를 받는다. 매개변수의 이름 앞에 * 기호를 붙히면 이 자리 이후로 여러 개의 파라미터가 붙을 수 있다. 고로 가변인수는 매개변수 목록 중 가장 마지막에 배치되어야 한다.
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라고 한다.
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 타입으로 전달된다.
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))
복합 가변인수
일반 인수, 가변인수와 키워드 가변인수를 모두 사용할 수 있다. 순서에 유의해야 한다.
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)