*args와 **kwargs의 차이가 무엇일까?

반응형

파이썬 함수의 정의에서 *args, **kwargs 를 사용하는 경우가 있다.

def A(*args, **kwargs):
	...
        ...
    	...

일반적인 파라미터와 다르게, 파라미터 이름 앞에 * 또는 **가 붙어있다. 또, 다른 이름을 붙이기보단 *args, **kwargs 자체로 사용한다.

 

*args (tuple 형태)

args의 의미 : arguments.

내가 어떤 함수를 개발했을 때, 그 함수에 들어갈 파라미터의 개수가 정해지지 않았을 수도 있다.

예 ) n개의 숫자를 곱한 결과를 반환하는 함수를 생성한다고 해보자.

def mul(*args):
	return sum(args)

함수의 파라미터에 *args를 넣음으로써 여러개의 파라미터가 들어갈 수 있게 된다.

 

**kwargs (dictionary 형태)

kwargs의 의미 : keyword arguments

*args와 비슷하나,arguments를 키워드 파라미터로 받고 싶을 때 사용한다.

def mul(**kwargs):
	print(kwargs)
    return sum(kwargs.values())


mul(a=2, b=5, c=10)
>> {'a':2, 'b':5, 'c':10}
100

 

 

반응형

댓글