-
함수 선언에서 인수를 받을 때 '*'는 가변으로 받겠다는 선언
>>> def f(v1, *v2, v3=None): ... print("v1:{} v2:{} v3:{}".format(v1, v2, v3)) ... >>> f(1,2,3) v1:1 v2:(2, 3) v3:None >>> f(1,2,3,4) v1:1 v2:(2, 3, 4) v3:None >>> f(1,2,3,4,v3=5) v1:1 v2:(2, 3, 4) v3:5 >>>
함수 호출에서 인수를 넣을 대 '*'는 자료구조 자체를 주지 않고 목록 내용 n개를 인수 n개로 주는 명령이다.
>>> f([11,22,33,44,55], 99) v1:[11, 22, 33, 44, 55] v2:(99,) v3:None >>> f(*[11,22,33,44,55], 99) v1:11 v2:(22, 33, 44, 55, 99) v3:None >>>
함수 선언에서 '**'는 인수 명명을 가변으로 하겠다는 선언이다
>>> def f2(v1, **v2): ... print("v1:{} v2:{}".format(v1, v2)) ... >>> f2(1,kk=22, jj=33) v1:1 v2:{'kk': 22, 'jj': 33} >>> >>> f2(1) v1:1 v2:{} >>> f2(1, 22, 33) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: f2() takes 1 positional argument but 3 were given >>> f2(1, 22) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: f2() takes 1 positional argument but 2 were given >>>
'Python' 카테고리의 다른 글
Python - deque - temp (0) 2020.09.08 Python - Time Complexity (0) 2020.09.07 Python - reversed 클래스 함수 (0) 2020.09.07 Python - generator expression (0) 2020.09.07 Python - 사칙연산 관련 '//' '**' (0) 2020.09.06 Python - bisect 함수 (0) 2020.09.06 Python - iterable 유형 (0) 2020.09.06 Python - product (0) 2020.09.06