이 글의 소스 샘플은 [Google Colab에서 Python 코드 실행하기] 글에서 언급한 환경을 이용하면 Python 프로그램을 PC에 설치하지 않더라도 Chrome, IE, Edge의 Browser에서 쉽게 Python프로그램을 실행하고 따라할 수 있습니다.
가변 인수
함수를 호출할 때 마다 그 길이가 다른 인수를 ‘가변 인수’라고 부릅니다. 가변 인수는 0개 이상의 임의의 실제로 호출해보지 않으면 인수가 몇 개가 될지 모르는 함수나 메소드가 필요할 때 가변장 인수를 사용하게 됩니다. 가변 인수는 다음의 두 가지 종류가 있습니다.
- 가변 위치 인수
- 가변 키워드 인수
가변 위치 인수
튜플 구조를 가지는 가변 위치 인수를 받는 파라미터 앞에는 ‘*’를 붙입니다. 아래는 가변 위치 인수를 받는 함수의 예시입니다.
def fun6 (para1, para2, *args) :
return f'parameter1:{para1}, parameter2:{para2}, variadic:{args}'
#인수 2개 전달
print (fun6 (1, 2))
parameter1:1, parameter2:2, variadic:()
위의 print문은 인수를 파라미터의 개수보다 적은 2개만 전달 받습니다. 그러나 가변 인수는 0개 이상의 임의의 숫자로 구성한다는 특성을 가지고 있기 때문에 에러가 발생하지 않습니다. 위치 인수는 정렬된 순서대로 각 파라미터에 전달되므로 위의 print문에서는 두 개의 인수가 각각 para1, para2에 순서대로 전달됩니다. args에 해당하는 위치 인수는 받지 않았기 때문에 빈 괄호 ‘( )’가 출력됩니다.
#인수 3개 전달
print (fun6 (1, 2, 3))
#인수 4개 전달
print (fun6 (1, 2, 3, 4))
parameter1:1, parameter2:2, variadic:(3,)
parameter1:1, parameter2:2, variadic:(3, 4)
일반 파라미터 개수 이상의 인수를 전달했을 때, 각 파라미터에 값을 전달하고 남은 인수를 받는 것이 args입니다. 세번째, 네번째 인수 ‘3’, ‘4’가 남은 인수이므로, args는 이 인수들을 받습니다. ‘variadic:’ 옆 괄호 안에 이번엔 ‘3, 4’가 출력된 것을 확인할 수 있습니다.
가변 키워드 인수
일반적인 키워드 인수는 키워드를 매개 변수 이름과 일치시켜야 하지만, 파라미터 명과 키워드를 일치시킬 수 없는 경우가 있습니다. 이러한 경우에 ‘가변 키워드 인수’를 사용합니다. 가변 키워드 인수는 ‘키워드 = 실제 인수 값’의 조합을 하나의 파라미터로 받을 수 있게 합니다. 사용할 때는 가변 키워드 인수를 받을 파라미터 명 앞에 ‘**’을 붙여줍니다.
아래는 가변 키워드 인수를 받는 함수의 예시입니다.
def fun7 (para1, **kywargs) :
return f'para1:{para1}, others:{kywargs}'
print(fun7(para2=2, para1='parameter1', keypara='keyword'))
para1:parameter1, others:{'para2': 2, 'keypara': 'keyword'}
‘para1 = ‘parameter1”은 첫번째 매개변수 para1에 전달되고, 나머지는 두번째 파라미터 kywargs에 전달되어 ‘,’로 구분되어 있는 것을 확인 할 수 있습니다. 이처럼 가변 키워드 인수는 사전 구조를 가집니다.