따라서 default 값이 정해진 parameter가 non-default value paramter보다 먼저 오면 안 된다.
되면 안 되는 이유는 "Parameter로 무엇을 받을지 모호해지기 때문"이다.
아래 예제코드를 보면
def myIntroduce(my_name = "문성호", my_Address):
print(f"my name is {my_name}")
print(f"I live in {my_Address}")
print(myIntroduce("인천"))
결과 :
Traceback (most recent call last):
File "python", line 1
SyntaxError: non-default argument follows default argument
default 인수인 my_name을 넣었더라도, 원하면 언제든 다른 인수를 넣을 수 있다. 그러나 인수가 하나(위 예의 경우 "인천")만 들어가면, my_name에 들어가야 할지, my_Address에 들어가야 할 지 애매해진다.
따라서 반드시 아래코드와 같이 default-value parameter를 뒤로 배치해줘야, 인수가 하나만 들어오더라도 my_Address에 넣을 수 있다.
def myIntroduce(my_Address, my_name = "문성호"):

Python의 Function Parameter는 여러가지 종류가 있고,
그 인수들이 각자의 위치에 따라 순서가 정해져있다.
위 그림과 같이 약속되어 있다.
이 순서대로만 받을 수 있다.
def func_param_with_var_args(name, *args, age):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
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)
def func_param_with_kwargs(name, age, **kwargs, address=0):
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")
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")
def mixed_params(name="아이유", *args, age, **kwargs, address):
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")
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")