Asterisk ( * )
Life is short, you need python !
Asterisk ( * )
라이브러리의 doc를 보시면 *args와 **kwargs를 보신 적이 있을 것입니다. 예시를 보는 것이 가장 빠를 것 같습니다.
*args
hello라는 함수를 정의하였습니다. 3~8의 숫자를 넣었을 때, 3은 x로 들어가고, 4는 y로 들어가고 나머지가 *z가 되는 것입니다. 데이터 타입은 튜플로 나오게 됩니다. 이처럼 뒤의 갯수를 모를 때 앞에 별표 하나를 입력하면 어렵지 않게 사용할 수 있습니다. doc에서 *args는 갯수가 정해져있지 않은 argument들을 의미합니다. 여러개의 값을 한번에 받을 수 있죠! 파라미터에 *args를 씀으로써 유연하게 인자들을 받을 수 있습니다.
**kwargs
hi라는 함수를 정의하였습니다. kwargs는 keyword arguments를 의미합니다. 갯수가 정해져있지 않은 키워드 인자들을 받을 수 있습니다. 예시에서, 키워드가 이번엔 dict값으로 들어가게 됩니다.
Unpacking
(1,2,3,4,5)는 하나짜리 튜플입니다. 튜플안에 5개가 있다고 해서 5개가 아니라 '한 개'의 튜플입니다. 이 것을 Asterisk를 통해 풀어줄 수도 있습니다. 위의 예시같이 (1,2,3,4,5)로 반환되는 것이 아니라 다섯개로 반환되는 것입니다.
우리가 파라미터에 *를 썼듯, 인자에 *를 붙여주면 언팩킹이 됩니다.
Practice
1과 10을, 2와 20을 더해주기 위해서 example를 zip한 뒤에 sum을 했더니 에러가 나왔습니다. 실제로 작동되는 것은 example의 첫 번째 요소인 [1,2]와 ( )를 더하고, [10, 20]과 ( )를 더해주는 것입니다. 이 때 Asterisk를 사용할 수 있습니다.
'기본소양 > Pythonic CODE' 카테고리의 다른 글
[Pythonic CODE] 6. Collections (0) | 2021.01.24 |
---|---|
[Pythonic CODE] 4. Lambda & Map & Reduce (0) | 2021.01.24 |
[Pythonic CODE] 3. Enumerate & Zip (0) | 2021.01.24 |
[Pythonic CODE] 2. Split & Join (0) | 2021.01.24 |
[Pythonic CODE] 1. List Comprehension (0) | 2021.01.24 |
댓글