본문 바로가기
코딩공부

[python]args, kwargs / TIL_220915

by Dong_Devlog 2022. 9. 15.

args와 kwargs는 함수에서 인자로 받을 값들의 갯수가 많거나 불규칙할 때 주로 사용된다.

함수를 선언할 때 args는 앞에 *를 붙여 명시하고, kwargs는 앞에 **를 붙여 명시한다.

하지만 꼭 저 단어를 쓸 필요가 없다. *abc, **abc로 적어도 된다.

 

아래와 같이 같은 결과 값을 볼 수 있다.

def add(*abc):
    return abc

print(add(1, 2, 3))	#(1, 2, 3)
def add(*args):
    return args

print(add(1, 2, 3))	#(1, 2, 3)

 

*args는 아래와 같이 인자의 수와 상관없이 사용할 수 있다.

add 함수의 *args에 입력된 인자가 튜플 형식으로 저장되는 것이다.

def add(*args):
    result = 0
    for i in args:
        result += i
        
    return result

print(add())           # 0
print(add(1, 2, 3))    # 6
print(add(1, 2, 3, 4)) # 10

 

**kwargs는 함수에서 여러개의 인자를 key - value 형태로 받을 때 사용한다.

**kwargs는 딕셔너리 형태로 저장 된다.

def name_age(**kwargs):
	print(kwargs)
    
name_age(name="홍길동", age="50")
# {'age': '50', 'name': '홍길동'}

 

*args와 **kwargs를 같이 사용할 수 도 있다.

인자가 int 값이나 str값이나 상관없이 받을 수 있다.

def print_arguments(a, b, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)
    
print_arguments(
    1, # a
    2, # b
    3, 4, 5, 6, # args
    hello="world", keyword="argument" # kwargs
)

# result print
"""
1
2
(3, 4, 5, 6)
{'hello': 'world', 'keyword': 'argument'}
"""

댓글