본문 바로가기
Python/기초

파이썬 함수 심화2: *args와 **kwargs

by 모두의 케빈 2023. 8. 27.

 

 

*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] 함수의 정의와 활용에 대한 완벽 정리

함수의 정의와 선언 함수란 무엇인가. 수학에서는 입력값 x와 출력값 y의 관계를 함수라고 합니다. 파이썬의 세계에서도 함수란, 입력값을 받아서 어떠한 행동을 취하고 그 결과값을 반환(return)

kevinitcoding.tistory.com

 

 

[파이썬/Python] 함수 심화: 인자 전달 방법과 default 값

 

[파이썬/Python] 함수 심화: 인자 전달 방법과 default 값

이전 시간에는 함수의 정의와 기초적인 문법에 대해 알아봤습니다. 이번 시간에는 함수를 호출할 때 인자를 전달하는 방법에 대해 좀 더 알아보겠습니다. Positional Argument와 Keyword Argument 파이썬

kevinitcoding.tistory.com

 

 

댓글