파이썬이 딕셔너리에 들어있는 값을 함수에 잔달하면서 각 값에 대응하는 키를 키워드 사용
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
세 번째
어떤 함수를 사용하던 기존 호출자에게 하위 호환성 제공
함수 파라미터 확장
새로운 버그가 줄어든다