파이썬에서 필요한 위치 기반 인자가 모두 제공되면, 키워드 인자를 넘기는 순서는 관계없으
아래는 모두 같은 코드임
def remainder(number, divisor):
return number % divisor
# 아래 네개는 모든 같은 코드
remainder(20, 7)
remainder(20, divisor=7)
remainder(number=20, divisor=7)
remainder(divisor=7, number=20) # 순서 상관 x
위치 기반 인자 적용사항
위치 기반 인자를 지정하려면 키워드 인자보다 앞에 지정해야 함
assert remainder(number=20, 7) == 6
>>>
assert remainder(number=20, 7) == 6
^
SyntaxError: positional argument follows keyword argument
각 인자는 단 한 번만 지정해야 함
assert remainder(20, number=7)
>>>
assert remainder(20, number=7)
TypeError: remainder() got multiple values for argument 'number'
**딕셔너리의 내용물을 사용해 remainder와 같은 함수를 호출하고 싶다면 연산자를 사용할 수 있음
**연산자는 파이썬이 딕셔너리에 들어 있는 값을 함수에 전달하되 각 값에 대응하는 키를 키워드로 사용하도록 명령
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에 모아주는 **kwargs
라는 파라미터를 사용함
def print_parameters(**kwargs):
for key, value in kwargs.items():
print(f'{key} = {value}')
print_parameters(alpha=1.5, beta=9, 감마=4) # 한글 피라미터도 잘 작동함