말 그대로 기본값이 없는 파라미터를 말하는건데
def age(num1, num2):
print(num1, num2)
만약 함수 age를 호출 했을때 num1,num2같이 기본값을 설정하지 않은 경우를
Non-Default Value Parameter라고 한다. 하지만 num1과 num2의 값이
없기 때문에 input이 필수로 들어가야합니다. 함수호출시 작동을 안할수도 있기 때문이다.
def age(num1 = 18, num2 = 22):
print(num1, num2)
18 22
여기는 기본값이 설정되어있기때문에 바로 호출시에는 18하고 22가 값으로 나오게 된다.
그렇기 때문에 기본값이 있는 파라미터이다.
default value parameter를 non-default value parameter 앞에 정의 하면
SyntaxError: non-default argument follows default argument 이런 에러가 나오는데
구글링 결과 function parameter에는 argument를 처리하는 순서가 있다고 한다.
- 앞에서부터 순서대로 지정되는 위치 인자
- 기본값이 정해져있는 매개 변수
- 가변 인수(*arg) (예 - list, tuple)
- 키워드 인수
4-1. 기본값이 정해지지 않은 키워드 인수
4-2. 기본값이 정해져있는 키워드 인수이며 *(asterisk) 뒤에 오는지로 2번과 구분- 가변 키워드 인수(**kwargs) (예 - dictionary)
오류가 발생하는 원인은 순서없이 무작위로 생성시 어떤 파라미터에 값을 받아야 할지
정할수 가 없기 떄문이다.
예를들어
def func(x=1,y): print(x,y) func(2)
우리의 생각? 대로 라면 x=는 자명히 1의 값을 가져가야 하지만
default 값을 가진 parameter도 당연히 값이 변경 가능하기 때문에
func(2)의 2는 x의 에게 할당이 되서 에러가 나게 됩니다.