다음 함수를 실행하면 syntax error 나며 Error 메시지는 non-default argument 가 default argument뒤에 위치한다는 에러이다.
def love_you_not_ok(my_name = "정우성", your_name ):
print(f"{my_name} loves {your_name}")
SyntaxError: non-default argument follows default argument
해당 에러가 나는 이유는 파이썬은 default value parameter 를 가지는 함수를 보면, 함수로 전달되는 인자를 첫번째 부터 채워넣기 때문이다.
위와 같이 love_you_not_ok 함수 호출시, "이정재"가 my_name 인지, your_name인지 파이썬 입장에서 알 수가 없으므로 문법에러를 출력한다.
default value parameter 를 가지는 함수를 선언할 때는 뒤에서 부터 default value 를 지정해주자.
이렇게 함으로써 입력값을 입력 안한 인자는 default value 를 가지고 함수를 실행하며, default parameter 가 아닌 인자가 입력이 되지 않으면
missing required positional argument 에러를 출력하게 된다.
# Syntax error , default value parameter를 non-default value parameter 앞에 선언하면 syntax error
# def love_you_not_ok(my_name = "정우성", your_name ):
# print(f"{my_name} loves {your_name}")
# 호출 예제
#love_you_not_ok("이정재")
# default value parameter
def love_you_ok(my_name, your_name="아이유"):
print(f"{my_name} loves {your_name}")
love_you_ok() # missing required positional argument 에러 출력
love_you_ok("이정재")
love_you_ok("이정재", "아이유")