<TIL> Python - SyntaxError: non-default argument follows default argument

1273 단어 TILerrorpythonTIL


해당 error는 다음과 같은 코드에서 발생한다.

def func(a, b, c=3, d) :
  print (a,b,c,d)

위의 코드에서 'c=3' 이라는 default argument 가 d라는 non-default argument 보다 앞에 위치해 있어서 발생하게 된 error이다.

왜 이런 error 가 발생하는걸까?

정답은 파이썬 언어의 인터프리터 방법에 있다
위의 코드에서 만약
func(1,2,5) 를 입력한다면 파이썬은 a=1, b=2 라고 받아들이지만, c=5 라는건지 d=5라는건지 인터프리터가 혼동하게 된다.

따라서 이러한 error 가 발생하지 않게 하기 위해서는

def func(a, b, d, c=3) :
  print (a,b,c,d)

이런식으로 default 값이 정의된 argument 가 non-default arguments들의 뒤에 위치해 있으면 된다.

좋은 웹페이지 즐겨찾기