반응형
이름인수(named argument)
함수를 호출하면서 함수명(인수=초깃값) 처럼 인수에 초깃값을 주고 매개변수의 이름과 매핑시켜 값을 전달 할 수 있다.
이 방법을 사용하면 함수의 매개변수에 인수를 전달할 때 매핑 순서를 지키지않아도 가능하다.
def func(a,b):
print('a :',a)
print('b :', b)
func(a=1,b=2)
func(b=1,a=2)
""" 결과값
a : 1
b : 2
a : 2
b : 1
"""
가변인수처리
함수를 호출하다 보면 매개변수로 전달할 값이 하나일때도 있고 여러개 일때도 있다. 이때마다 함수를 따로 작성해야한다면 너무 번잡한 일이 된다.
이 문제를 해결하는 방법으론 *매개변수(위치 가변)가 있다. 매개변수 이름에 *를 붙여주면 입력 값을 전부 투플로 묶어 처리하게된다.
def sum_numbers(*numbers):
print(type(numbers))
sum =0
for number in numbers:
sum += number
return sum
print(sum_numbers(1,2,3,4,5))
""" 결과값
<class 'tuple'>
15
"""
그렇다면 딕셔너리 자료형은 어떻게 매핑할까?
이 경우는 **를 매개변수 앞에 붙이면된다.
def func(a,b,*v1,**v2):
print(a,b)
print(v1)
print(v2)
func(1,2)
func(1,2,3,4,5)
func(1,2,3,4,5,m=6,n=7)
"""결과값
1 2 --> func(1,2)
()
{}
1 2 --> func(1,2,3,4,5)
(3, 4, 5)
{}
1 2 --> func(1,2,3,4,5,m=6,n=7)
(3, 4, 5)
{'m': 6, 'n': 7}
"""
위의 코드처럼 입력받은 인수들을 순차적으로 매개변수로 처리하고, 딕셔너리는 **로 처리가능하다는 것을 알 수 있다.
728x90
반응형
'Python > 함수와 모듈' 카테고리의 다른 글
python 내장함수 abs(), all(), any(), dir(), divmod(), enumerate(), pow() (2) | 2023.09.26 |
---|---|
Python Lambda 함수, map 함수 (2) | 2023.09.21 |
Python 함수 선언,호출 (2) | 2023.09.20 |