*args와 **kwargs
*args와 **kwargs라는 이름으로 굳이 사용할 필요가 없다.
*의 개수가 중요하고, 그 이후에는 사용하고 싶은 문자를 적어도 된다.
다만 args와 kwargs가 관례처럼 사용된다.
이 두개는 함수를 정의할때 매개변수로 사용된다.
가변갯수의 인자를 매개변수값으로 받을 수 있다.
즉 사용자들조차 얼마나 많은 인자들을 함수에 넣을지 모르는 상황에서 사용할 수 있다.
중요한 차이는 keyword이냐 non keyword 이냐 이다.
(kwargs는 keyword argument 이다.)
*args의 사용법
args에 값을 집어 넣으면 튜플 형태가 된다. args를 매개변수로 하는 함수에 인자를 넣어 호출시,
함수안에 args라는 튜플이 생기고, 그 안이 인자로 채워진다.
def test_arg(*args):
print (args)
test_arg(4,5,6)
#result
(4,5,6)
**kwargs의 사용법
args가 튜플형태로 저장한다면,
kwargs는 딕셔너리 형태로 값을 저장한다. 인자를 받을때 (key = value)의 형태로 받는다.
그러면 {key:value} 의 딕셔너리 형태로 값을 저장한다.
def test_kwarg(**kwargs):
print (kwargs)
test_kwarg(rank ="19")
#result
{'rank'='19'}
같이 사용?
둘이 같이 사용하게 된다면, 그 인자의 형식대로 키값이 지정돼 있냐 등을 기준으로 튜플, 딕셔너리를 각각 저장하게 된다.
참조
https://ddanggle.gitbooks.io/interpy-kr/content/ch1-args-kwargs.html
https://legitcode267.tistory.com/13
댓글