파이썬에서 함수는 input parameter 를 받아서 return 한 값을 output 으로 리턴한다.
def func(parameter1, paremeter2)
print(f" 안녕 {parameter} 잘가 {paremeter2}")
이 때 함수 parameter 에 default 값을 설정할 수 있다.
def func(parameter1, paremeter2="자바")
print(f" 안녕 {parameter} 잘가 {paremeter2}")
default 값이 지정된 parameter2 를 default value paremeter 라고 하고
지정되지 않은 parameter1 을 non-default parameter 라고 한다.
함수를 호출 할 때 parameter2 의 값을 전달하지 않아도 출력이 된다.
func("파이썬")
--> 안녕 파이썬 잘가 자바
여기서 default value parameter 를 non-value parameter 보다 우선 해서 사용하게 되면 에러가 발생한다.
def func(parameter1="파이썬", paremeter2)
print(f" 안녕 {parameter} 잘가 {paremeter2}")
--> SyntaxError: non-default argument follows default argument
오류가 나는 이유를 생각해 봤을 때 간단했다. default value 를 주었다고 하더라도 호출 할 때 값을 전달하면 default 값이 아니라 전달받은 값이 출력된다.
def func(parameter1, paremeter2="자바")
print(f" 안녕 {parameter} 잘가 {paremeter2}")
func("파이썬","자바스크립트")
--> 안녕 파이썬 잘가 자바스크립트
이와 같은 이유로 defalut value parameter 를 우선 사용하게 되면 사용자가 호출 시 생략한 parameter 가 함수의 어느 parameter 를 가르키는지 알 수 없어지면서 원하는 결과를 얻지 못하기 때문에 사전에 차단하는 것 같다.