*args와 **kwargs
전달해야 하는 인자의 개수를 정확히 모를 때는?
파이썬 함수에 2개의 매개 변수가 정의되어 있다면, 함수를 호출하기 위해서는 2개의 인자가 필요합니다. 아래의 예시를 살펴볼까요.
def add_values(v1, v2):
print(f"{v1}과 {v2}를 더합니다.")
return v1 + v2
sum_values = add_values(5,10)
print(f"결과: {sum_values}")
>>>>> 실행 결과
5과 10를 더합니다.
결과: 15
위의 "add_valeus" 함수는 2개의 숫자만 더할 수 있습니다. 더 많은 숫자를 더하기 위해서는 그때마다 함수를 계속 재정의해야 합니다. 너무 비효율적입니다. 이런 경우, 사용할 수 있는 것이 *args입니다.
*args: argument를 묶어서 튜플 형태로 전달
개수가 정해지지 않은 다수의 인자가 전달되면, 이 값들을 모두 묶어서 한 개의 튜플 자료형으로 받는 것, 그것이 *args의 역할입니다. args는 argument의 줄임말로, 복수의 인자값들을 받을 경우에 사용됩니다.
매개 변수의 이름이 굳이 args 일 필요는 없습니다. 그러나 관용적으로 복수의 인자를 받을 때는 ‘args’라는 이름을 사용하니 참고해 주세요.
여러 개의 인자를 받아서 더하는 함수를 정의해 보겠습니다.
def add_values(v1, v2, *args):
print(f"*args의 자료형은 {args}입니다.")
print(f"{v1}, {v2}, {args}를 더합니다.")
total_sum = v1 + v2
for i in args:
total_sum += i
return total_sum
sum_values = add_values(1,2,3,4,5)
print(f"결과: {sum_values}")
>>>>> 실행 결과
*args의 자료형은 (3, 4, 5)입니다.
1, 2, (3, 4, 5)를 더합니다.
결과: 15
키워드 매개변수: **kwargs
키워드 매개변수라는 개념이 있습니다. 이는 전달되는 인수를 딕셔너리 형태의 변수에 저장하는 방법인데요.
키워드 아규먼트(Keyword Argument)의 약자인 kwargs에 ‘**’를 붙여서 키워드 매개변수라고 합니다. (**kwargs는 *args와 마찬가지로 관용적인 표현입니다.)
def kw_argument(**kwargs):
print(f"*kwargs의 자료형은 {kwargs}입니다.")
return kwargs
result = kw_argument(a=1, b=2, c=3)
print(result)
>>>>> 실행 결과:
*kwargs의 자료형은 {'a': 1, 'b': 2, 'c': 3}입니다.
{'a': 1, 'b': 2, 'c': 3}
*args와 **kwargs를 사용 시 주의할 점
매개 변수의 순서는 항상 일반 매개 변수를 먼저 쓰시고 *args, **kwargs 순으로 작성하셔야 에러가 발생하지 않습니다.
이 글이 도움이 되셨다면, 아래 글은 어떠신가요?
[파이썬/Python] 함수의 정의와 활용에 대한 완벽 정리
[파이썬/Python] 함수 심화: 인자 전달 방법과 default 값
'Python > 기초' 카테고리의 다른 글
파이썬 제너레이터(Generator) 한 글로 정리하기 (0) | 2023.08.29 |
---|---|
파이썬 함수 3편: 함수 안의 함수와 lambda (0) | 2023.08.28 |
파이썬 반복문: for문의 A to Z 모든 것, 한 글로 정리하기 (0) | 2023.08.26 |
파이썬 반복문: while에 대한 A to Z 한 글로 정리하기 (0) | 2023.08.25 |
다양한 예제 문제를 통해 살펴본 파이썬 if문의 모든 것 (0) | 2023.08.24 |
댓글