TIL10 함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안 되는 이유

1928 단어 TILTIL

왜 정의된 매개변수가 인자 값을 받고 있으면 오류가 왜 나는지 말해보겠다.

첫번째: 매개변수2가 인자값을 받았을경우

def avc(a,b=2):
    print(a*b)


avc(2)
4

보다시피 정상적으로 인자 값을 매개변수가 받고 호출하는 변수에서 avc(2)로 첫번째 매개변수도 인자값을 받았기 떄문에 정상적으로 4가 출력된다!.

두번쨰 함수 매개변수1에서 인자값을 받고 출력한 경우

def a(a=2,b):
    print(a*b)


a(2)

SyntaxError: non-default argument follows default argument


에러가뜬다. 

그 이유는 호출된 함수 a(2)가 함수 매개변수1에 2로 들어가야지 정상적으로 호출되는데 이미 매개변수1에서 인자값 2를 받고 있어
문법적 오류가 떠서 에러가 발생하는 것이다.

그러므로 매개변수 안에 인자값을 받고있게 해서는 안된다.

쉽게 말하면 초깃값이 지정된 매개변수는 뒤로 몰아주면 정상적으로 호출이 작동된다!

좋은 웹페이지 즐겨찾기