참고: https://brunch.co.kr/@princox/180
args, kwargs 정의
- args는 agruments, kwargs는 keyword arguments의 줄임말이다.
- 따라서 반드시 args나 kwargs로 작성하지 않아도 된다.
*의 용도
- 함수의 parameter로 *args를 받는 경우가 있다.
- 몇 개의 인자를 받을지 알수 없는 경우 *를 인자 앞에 붙여 선언하는 경우, 함수에서 튜플 형태로 받는다.
- 0개의 인자를 받아도 비어있는 튜플 형태로 받는다.
def Marguments(*args):
print(f"args: {args}")
print(f"args's type: {type(args)}")
Marguments(1,2,3,4)
**의 용도
- 몇 개의 인자를 받을지 모를때 사용하는 것은 동일하나, 튜플 형태가 아닌 딕셔너리 형태로 받는다.
def Mkwargs(**kwargs):
print(f"kwargs: {kwargs}")
print(f"kwargs's type: {type(kwargs)}")
Mkwargs(a = "1", b='2')
parameter의 순서
- 일반 변수는 *args, **kwargs 보다 항상 앞에 위치해야 한다.
- *args는 **kwargs 보다 항상 앞에 위치해야 한다.