위치 인수 / 키워드 인수

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

remainder(20, 7)                  # 위치 인수
remainder(20, divisor=7)          # 위치 인수 + 키워드 인수
remainder(number=20, divisor=7)   # 키워드 인수
remainder(divisor=7, number=20)   # 키워드 인수
remainder(number=20, 7)

>>>
SytaxError: non-keyword arg after keyword arg
remainder(20, number=7)

>>>
SytaxError: remainder() got multiple values for argument "number"

키워드 인수의 유연성의 이점

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("%.3f kg per second" % flow)

>>>
0.167 kg per second
def flow_rate(weight_diff, time_diff, period):
    return (weight_diff / time_diff) * period
def flow_rate(weight_diff, time_diff, period=1):
    return (weight_diff / time_diff) * period
def flow_rate(weight_diff, time_diff, period=1, units_per_kg=1):
    return ((weight_diff / units_per_kg) / time_diff) * period

pounds_per_hour = flow_rate(weight_diff, time_diff, period=3600, units_per_kg=2.2)
def flow_rate(weight_diff, time_diff, period=1, units_per_kg=1):
    return ((weight_diff / units_per_kg) / time_diff) * period

pounds_per_hour = flow_rate(weight_diff, time_diff, 3600, 2.2)