-
함수의 가변인자 *(Asterisk)의 의미Computer Language/Python 2020. 11. 28. 16:53728x90
python에서 *하나붙은 argument는 함수 호출 시 argument의 개수를 가변적으로 입력할 수 있습니다.
def test(\*arg): for data in arg: print(data)
이렇게 함수를 선언하고 아래와 같이 두가지 형태로 함수를 호출해봅시다.
test(1,2,3)
test( (1,2), (1,2), (2,1), (2,2) )결과는 아래와 같이 가변변수 값으로 그대로 출력됩니다.
>>> test(1,2,3) 1 2 3 >>> test( (1,2), (1,2), (2,1), (2,2) ) (1, 2) (1, 2) (2, 1) (2, 2)
**karg는 어떻게 다를까?
*이 두개 붙은 키형 가변변수는 보통 key와 값으로 선언됩니다.
def test2(\*\*karg): for key, value in karg.items(): print('key : %s, value : %s' % (key, value))
함수를 호출할때는 아래와 같이 key=value 형식으로 argument를 넣어줍니다.
test2(a=1, b=2)어라? 어디서 많이 본듯한 유형인데..
바로 dict랑 구조가 비슷합니다. 다양한 형태의 dict자료형을 함수내에서 template화해서 처리 가능할 것 같습니다.
test해봅시다. dictionary 자료형을 두가지 형태로 만듭니다.data1 = {
'a':1,
'b':2,
'c':3
}data2 = {
'a':1,
'b':(1,2),
'c':{ 'sub1':1, 'sub2':2 }
}함수를 호출할때는 앞에 **를 꼭 붙여줘야 합니다.
>>> test2(**data1) key : a, value : 1 key : b, value : 2 key : c, value : 3 >>> test2(**data2) key : a, value : 1 key : b, value : (1, 2) key : c, value : {'sub1': 1, 'sub2': 2}
두번째 유형이 어디서 많이 본거죠? 네 맞습니다. json형태입니다.
json형태의 data를 다룰때 가변변수를 사용해서 template화 된 함수를 구현할 수 있습니다.참고로 Key형 가변변수는 Pyhon3에서만 지원합니다.
'Computer Language > Python' 카테고리의 다른 글
reduce 활용법 (0) 2020.12.02 map 활용법 (숫자 list를 문자열로 변환) (0) 2020.12.02 시간 함수 datetime (0) 2020.11.29