본문 바로가기

Python

[Python] 파이썬 가변/기본/키워드 매개변수에 대하여

가변 매개변수

파이썬의 print()함수 같은 경우는 인자의 개수가 여러개가 들어가도 출력이 가능합니다. (ex. print("hi","my", "name", "is", "limcoding") 함수의 인자가 몇개 들어올지도 모르지만 print함수는 이러한 입력들을 잘 처리합니다. 이처럼 원하는 만큼 인자를 받을 수 있는 함수를 가변 매개변수라고 합니다.

def 함수명(매개변수1, 매개변수2, ... , *가변 매개변수): 
     처리 구문 

가변 매개변수는 일반 매개변수와 다르게 변수명 앞에 *을 붙힙니다. 가변 매개변수를 사용할때는 제약사항이 있는데요. 그 제약사항은 아래와 같습니다.

- 가변 매개변수 뒤에는 일반 매개변수가 올 수 없다.
- 가변 매개변수는 하나만 사용가능하다.

def value_times(times, *values): 
	for value in values: 
		print(times * value) 

value_times(3, 1, 2, 3, 4, 5) 

 

위 코드는 가변 매개변수 values에 입력된 값들을 times 즉 3배 하여 출력하는 함수입니다. 결과는 아래와 같습니다.
3
6
9
12
15

기본 매개변수

함수의 매개변수로 기본값을 지정할 수도 있는데, 이를 기본 매개변수라고 합니다. 만약 함수에 매개변수가 입력되지 않으면 기본값이 활성화됩니다. 이러한 매개 변수는 다음과 같은 제약이 있습니다.

- 기본 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.

def value_times(value, times=2): 
	print(times * value) 

value_times(3, 5) 
value_times(3) 

 

출력
15
6

그렇다면 기본 매개변수와 가변 매개변수를 함께 쓰는 상황에서는 어떻게 써야할까요? 이때는 매개변수에 직접 변수명을 명시하여 값을 넘겨줍니다. 이를 키워드 매개변수 기능이라고 합니다.


키워드 매개변수

앞서 살펴본 매개변수 전달 방식은 위치 매개변수(positional argument) 전달 방식이라고 해서 매개변수의 순서대로 인자를 입력받아 실행합니다. 이와 반대로 직접 매개 변수명을 지정하여 매개변수를 전달하는 방법이 있는데 이를 키워드 매개변수라고 합니다. 주의할 점은 호출시에 위치 매개변수를 먼저 전달하고 그 뒤에 키워드 매개변수를 전달하는 것입니다. 예제 코드는 아래와 같습니다.

def value_times(*values, times=2): 
	for value in values: 
		print(times * value) 

value_times(1, 2, 3, 4, times=5) 

 

출력
5
10
15
20

times = 5 라고 명시하므로써, 가변 매개변수와 기본매개변수의 용도를 명확히 구분하였습니다. 키워드 매개변수는 일반 매개변수와도 함께 사용가능합니다. 

def value_times(plus, value, times=2): 
	print(times * value + plus) 

value_times(1, 2)                       # 위치 매개변수 순서대로 넘겨줌 times는 2가 됨 
value_times(1, 2, 3)                    # 위치 매개변수 순서대로 넘겨줌 times는 3이 됨 
value_times(1, value=2, times=3)        # 위치 매개변수 후에 키워드 인자로 값을 넘겨줌 times는 3이 됨 
value_times(value=2, times=3, plus=1)   # 키워드 인자만 있는 경우 순서는 상관없다. 


출력
5
7
7
7