Python에서 *args와 **kargs를 이용해서 함수 인자(argument)를 입력받는 방법입니다.
핵심부터 이야기하면 *, **접두사는 가변 길이 매개변수(parmeter)입니다.
Python 함수 들을 보면 아래와 같이 *arg, **kargs가 매개변수(parameter)로 있는 함수를 보신 적 있을 겁니다.
# *arguments 에시 def print_input(*args): type_value_check = "{0} : {1}".format(type(args), args) print(type_value_check) for value in args: print(value, end = " ") print("") # *keyword arguments 예시 def print_subject_score(**kargs): type_value_check = "{0} : {1}".format(type(kargs), kargs) print(type_value_check) for key, value in kargs.items(): subject_score = "{0} is {1}".format(key, value) print(subject_score)
*arg : 인자들(arguments)을 가변 길이로 입력받은 후 하나의 튜플로 만들어 함수 내에서 사용
**kargs : (key=value) 형태의 인자들을 가변 길이로 입력받은 후 Dictionary로 만들어 함수 내에서 사용
def print_input(*args): type_value_check = "{0} : {1}".format(type(args), args) print(type_value_check) for value in args: print(value, end = " ") print("") print_input('국어', '수학', '영어') print_input('국어', '수학', '영어', '과학', '사회', '음악') ----- 출력(Output) ------ >>> <class 'tuple'> : ('국어', '수학', '영어') >>> 국어 수학 영어 >>> <class 'tuple'> : ('국어', '수학', '영어', '과학', '사회', '음악') >>> 국어 수학 영어 과학 사회 음악
def print_subject_score(**kargs): type_value_check = "{0} : {1}".format(type(kargs), kargs) print(type_value_check) for key, value in kargs.items(): subject_score = "{0} is {1}".format(key, value) print(subject_score) ----- 출력(Output) ----- >>> print_subject_score(korean=97, math=96, english=94)
def parameter_order(normal, *args, **kargs): ... parameter_order('normal_arg', 'arg1', 'arg2', a=10, b=20, c=30)
기타 궁금하신 사항은 댓글 남겨주세요 ^^
+ 혹시 몰라 Jupyter Notebook 파일도 남깁니다.
감사합니다.
참고자료
1. '개미'님 브런치, [나름 중급 파이썬1] *args, **kargs, https://brunch.co.kr/@princox/180
2. 'dev.jun94.log', [Python] *args와 **kwargs, https://velog.io/@hj8853/Python-args%EC%99%80-kwargs
3. 제타위키, 파이썬 가변길이 매개변수 *args, **kwargs, https://zetawiki.com/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC_%EA%B0%80%EB%B3%80%EA%B8%B8%EC%9D%B4_%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98_*args,_**kwarg
4.TAEWAN.KIM블로그, argument와 parameter 차이점, http://taewan.kim/tip/argument_parameter/
[Airflow] ModuleNotFoundError: No module named 'sqlalchemy.ext.declarative.clsregistry' (0) | 2021.04.20 |
---|---|
[Python] Python으로 파일생성 시간 및 용량 출력하기 (0) | 2021.04.19 |
[Python] 인자를 넘겨받아 스크립트(.py 파일) 실행하는 2가지 방법 (0) | 2021.04.05 |
[Python] Instance, Class, Static Method(메소드) 정리 자료 (0) | 2021.04.05 |
[Python] DataFrame np.inf, -np.inf 처리하기 (0) | 2021.03.31 |