positional arguments는 parameter 값을 넣어준 순서대로 호출 해주어야 한다.
positional arguments의 경우 순서에 맞춰서 parameter 값을 호출해주어야 한다. 그러나 Keyword Arguments방식으로 parameter 값을 호출하면 parameter 값의 순서가 바뀌어도 정상적으로 적용된다.
순서를 맞추어서 parameter 값을 호출하는 positional arguments와 순서와 상관 없는 keyword arguments를 혼용하여 사용하는것도 가능하다.
** 주의점은 순서를 지켜야한다.
positional argument>keyword argument 순서
함수 내에서 사용하는 arguments는 순서
1. positional arguments(순서가 정해져 있음)
2. default arguments (default값이 지정된 arguments)
3. positional arguments들의 집합
4. keyword arguments (함수를 호출할 때 값을 지정)
5. keyword default arguments (keyword arguments에 default 값이 지정된 경우)
6. keyword arguments의 집합
참조: https://getkt.com/blog/python-keyword-only-arguments/
Assignment
1번.default value parameter를 non-default value parameter 앞에 정의 하면 안되는 이유
2번. 위치인수와 가변인수의 순서가 잘못되어 오류 발생하여
*args(가변매개변수) age를 바꿔주면 해결됨
def func_param_with_var_args(name, age,*args ):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
3번.가변키워드인수가 가장 마지막에 위치해야해서 address와 위치를 바꿔야 하고 default값이 있는 address는 position보다 뒤에 와야되기 때문에 name과 age뒤에 위치하는 것으로 수정하면 된다.
def func_param_with_kwargs(name, age,address=0 **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
4번. 위치인수, 가변인수, 가변키워드인수가 모두 들어간 함수
argumets 우선순위에 따라 수정
def mixed_params(age,name="아이유", *args, address, **kwargs):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")