args는 ARGuments의 약자이고, kwargs는 KeyWordARGuments의 약자이다.
python에서 *args 와 **kwargs는 함수에서 가변 인자를 받을 수 있도록 할 때, 사용한다.
( C언어의 포인터와는 전혀 무관한 개념이다 )
일반적으로 함수를 선언할 때, 고정된 매개변수(parameter)를 작성하여 정의한다.
def sum_numbers(a, b):
sum_numbers = a + b
return sum_numbers
sum_numbers(1, 2)
# 3
때에 따라서, 두 개의 숫자가 아니라 다양한 숫자의 합을 구하는 함수를 필요로 할 때가 있다. 이때, 함수가 가변 인자를 받을 수 있도록 *args 와 **kwargs를 사용할 수 있다.
def sum_tuple(*args):
sum_numbers = sum(args)
return sum_numbers
# type(args)
# <type 'tuple'>
def sum_dict(**kwargs):
sum_numbers = 0
for key, value in kwargs.iteritems():
sum_numbers += value
return sum_numbers
# type(kwargs)
# <type 'dict'>
sum_tuple(1, 2, 3, 4, 5)
# 15
sum_dict(a=1, b=2, c=3)
# 6
*args는 데이터 타입이 tuple인 가변 인자를 받을 수 있고, **kwargs는 데이터 타입이 dict인 가변 인자를 받을 수 있다.
물론 2개를 동시에 사용하는 것도 가능하다. 그리고 매개변수를 선언할 때, 이름이 args와 kwargs 일 필요는 없다.
def sum_tuple(*num_tuple):
sum_numbers = sum(num_tuple)
return sum_numbers
def sum_dict(**num_dict):
sum_numbers = 0
for key, value in num_dict.iteritems():
sum_numbers += value
return sum_numbers
'당당한 프로그래밍 > 파이썬' 카테고리의 다른 글
[Python] 반복문 소요 시간 체크 (feat. tqdm) (0) | 2022.02.19 |
---|---|
[Python] 파이썬 변수 반복 생성 (feat. for 문) (0) | 2022.02.03 |
[Python] 올림, 내림, 반올림 (0) | 2021.03.15 |
[Python] 평균, 분산, 표준편차 계산하기 (0) | 2021.03.09 |
[Python] ImportError: No module named yaml 에러 대응 (0) | 2021.01.25 |