인자 Argument에는 두 종류가 있다.
그리고 항상 함수를 실행시키는 인자를 줄 때에는,
positional은 필수조건이므로 무조건 줘야 하고, 앞에 줘야하고,
keyword는 필수가 아니므로 안주면 생략가능하고, positional갯수를 채운 뒤에 줘야한다.
- Positional arguments : 정해지는 인자 ; first, second
- Keyword arguments : 키워드로 잡는 인자 ; third, fourth
- 코드로 보면,
- def save_ranking(first, second, third=None, fourth=None):
- ....
- save_ranking('Alice', 'Bella', 'Mike', fourth = 'Daniel')
- 이렇게 될 때, Positinal 두개 다 채워서 Mike부터 keyword로 들어가는 구조
하지만, 사람이름이 수천명이거나, 몇명인지 알 수가 없을 때에,,
Positional, Keyword 대신에 가변인자 Variadic 을 쓴다. (like variable parameters)
Variadic도 두가지로 나누어 쓴다.
- args : like positional argument. (value 형태인것들) -> tuple로 저장
- kwargs : like keyword argument. (key = value 형태인것들) -> dic으로 저장
Astrerisk : *
소위 '별'이라고 불리는 이 친구는 4가지 용법으로 쓰인다.
- 곱하기, 거듭제곱
- [리스트]뒤에 써서 리스트 반복확장
- [a,b] * 3 = [a,b,a,b,a,b]
- Variadic Argument 사용할 때
- 방금 쓴 달리기 ranking의 경우, def save_ranking(*args,**kwargs): 가능
- 하지만 ave_ranking('Alice', 'Bella', 'Mike', fourth = 'Daniel') 로 실행
- 컨테이너 타입 데이터(list,tuple,dic)를 unpacking할 때 (포장푸는기능)
- 컨테이너타입 데이터를 먼저 선언하고,
- 함수를 만들때 asterisk 인자명을 넣고,
- 실행할때에도 asterisk 인자를 씀.
- 그렇게 하면 for문을 돌리거나 items()하지 않았는데도 알아서 요소를 꺼내어 계산
>>> def print_numbers(*args):
... for arg in args:
... print(arg)
>>> x = [10, 20, 30]
>>> print_numbers(*x)
10
20
30
list unpacking
파이썬의 Asterisk(*) 이해하기
파이썬은 타 언어에 비해 비교적 연산자 및 연산의 종류가 풍부한 편이다. 특히 파이썬이 지원하는 많은 연산자중 하나인 **Asterisk(*)**는 단순히 곱셈
mingrammer.com
https://scribblinganything.tistory.com/161
파이썬 *args, **kwargs 의미와 예제를 통해 이해하기
파이썬 *args, **kwargs 의미와 예제를 통해 이해하기 예제 코드>> def a_func(*args, **kwargs): print(args) print("###########") for key, value in kwargs.items(): print(key) print(value) print("1번 예제") a_func(name='kc') print("") print
scribblinganything.tistory.com
'Study (Data Science) > Python' 카테고리의 다른 글
Unit 29. 함수의 return (0) | 2022.11.29 |
---|---|
참고) zip( ) 함수 (0) | 2022.11.29 |
참고) map + lambda (0) | 2022.11.29 |
참고) iterable, iterator 차이점 (0) | 2022.11.29 |
참고) 최댓값, 최솟값 (함수에서 return 잘 활용하는법) (0) | 2022.11.29 |
댓글