-
Efficient Python 23. 키워드 인자 사용법뜯고 또 뜯어보는 컴퓨터/파이썬 (Python) 2021. 7. 30. 01:28반응형
- 다음과 같은 함수를 살펴보자.
def remainder(number, divisor): return number % divisor assert remainder(20, 7) == 6 # remainder(20,7) # remainder(20, divisor= 7) # remainder(number= 20, divisor = 7) # remainder(divisor= 7, number= 20)
- 파이썬에서는 함수에 값을 넘길때, 밑의 4가지 경우와 같이 키워드를 선택해서 넘길 수 있는데, 이를 파이썬의 키워드인자라 한다.(뭐지... 답을 말해주고 답이라 하는 느낌이다.. ㅎㅎ)
- 키워드 인자의 규칙에는 다음과 같은 규칙성이 존재한다.
- 위치 기반 인자를 사용하려면 키워드 인자보다 앞에 지정해야 한다, 즉 number = 20, 7 과 같은 인자를 넘길 수 없다.
- 딕셔너리의 내용물을 사용해 remainder와 같은 함수를 호출하고 싶다면, **연산자 를 사용할 수 있다. -> 각 값에 대응하는 키값과 value 가 존재해야 한다.
- 다음의 예시를 보자,
my_kwargs = { "number":20, "divisor":7 } assert remainder(**my_kwargs) == 6
# 다음과 같이 키워드 인자와 섞어 쓸 수도 있지만, 중복되는 값들이 없어야 한다, my_kwargs = { "divisor":7, } assert remainder(number = 20, **my_kwargs) == 6
# **인지를 여러번 사용할 수도 있지만, 딕셔너리에 겹치는 키가 없어야 한다. my_kwargs = { "number":20, } other_kwargs = { "divisor":7 } assert remainder(**my_kwargs,**other_kwargs) == 6
# ** 인자는 아무값이나 받은 dict 파라미터를 받도록 사용할 수 있다. def print_parameters(**kwargs): for key,value in kwargs.items(): print(f"{key} = {value}") print_parameters(alpha=1.5, beta=9, 감마=4)
더보기alpha = 1.5
beta = 9
감마 = 4
키워드 인자의 장점 세가지
- 처음 보는 사람들에게 함수 호출의 의미를 정확하게 알려 줄 수 있다.
- remainder(number = 20, divisor = 7) 처럼 친절하게 함수의 의미에 대해 알려줄 수 있다.
- 키워드 인자의 경우 default 값 지정 가능.
- def remainder(number = 7):
- 어떤 함수를 사용하던 기존 호출자에게는 하위 호환성(backward compatibility)를 제공하면서 함수 파라미터를 확장할 수 있는 방법을 제공해준다, 쉬운 예를 들어. default 값을 호출하여, 기존의 함수를 변환하지 않고, 새로운 함수를 사용가능하다. (밑의 예제 참고.)
def flow_rate(weight_diff, time_diff, period): return (weight_diff / time_diff) * period #---> 시간당 유입량을 계산하는 함수 # 만약 단위가 바뀌어 킬로그램이 아닌 무게 단위를 사용해 시간당 유입량을 계산하게 된다면,(ex pound 단위를 사용) # 비율을 제공하는 새로운 선택적 파라미터 추가 def flow_rate(weight_diff, time_diff, period, conversion_rate = 1): return ((weight_diff+conversion_rate) / time_diff) * period #_----> 기존 함수를 크게 바꾸지 않고, 새로운 인자를 받는 함수 완성.
반응형'뜯고 또 뜯어보는 컴퓨터 > 파이썬 (Python)' 카테고리의 다른 글
Efficient python Ch24. 동적인 디폴트 인자 관리법 (0) 2021.07.31 Efficient Python 22. 변수위치 인자(*Args) 사용법 (0) 2021.07.30 Effective Python 21. 클로져란 (0) 2021.07.30 Effective python ch20. None보다는 예외를 (0) 2021.07.29