키워드인자

매일 공부(ML)·2022년 6월 14일
0

이어드림

목록 보기
75/146

키워드 인자로 선택적인 기능을 제공하라

파이썬이 딕셔너리에 들어있는 값을 함수에 잔달하면서 각 값에 대응하는 키를 키워드 사용

def remainder(number, divisor):
    return number % divisor

assert remainder(20,7) == 6

#** 연산자는 파이썬이 딕셔너리에 들어있는 값을 전달

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

#**kwargs 파라미터를 활용하여 모든 키워드 인자를 모은다

def print_parameters(**kwargs):
    for key, value in kwargs.items():
        print(f'{key} = {value}')

print_parameters(alpha=1.5, beta=9, 감마=4)

키워드 인자의 이점 세 가지

첫 번째

  • 키워드 인자를 사용하면 코드를 처음보는 사람들에게 함수 호출의 의미를 명확히 알려준다.

  • 위의 예시처럼 어떤 파라미터를 어떤 목적으로 쓰는지 명확해진다.


두 번째

  • 키워드 인자의 경우 함수 정의에서 디폴트 값 지정

  • 코드 중복과 잡음이 줄어든다.

def flow_rate(weight_diff, time_diff):
    return weight_diff / time_diff

weight_diff = 0.5
time_diff = 3
flow = flow_rate(weight_diff, time_diff)
print(f'{flow:.3} kg/s') #0.167 kg/s

#매번 period 지정

def flow_rate(weight_diff, time_diff, period):
    return (weight_diff / time_diff) * period



flow_per_second = flow_rate(weight_diff, time_diff, 1)

#잡음을 줄이기 위해 디폴트 값 지정

def flow_rate(weight_diff, time_diff, period=1)
    return ( weight_diff/ time_diff) * period

세 번째

  • 어떤 함수를 사용하던 기존 호출자에게 하위 호환성 제공

  • 함수 파라미터 확장

  • 새로운 버그가 줄어든다

profile
성장을 도울 아카이빙 블로그

0개의 댓글