[Python] default argument는 왜 non-default argument 앞에 오지 못할까 ?
본 포스팅에선 함수를 정의할 때 default value parameter를 non-default value parameter 앞에 정의하면 안되는 이유에 대해 알아본다.
🐵 default arguments는 왜 non-default arguments 앞에 오지 못할까 ?
함수를 정의할 때 default value parameter를 non-default value parameter 앞에 정의할 수 없다.
이유는 간단히 말하면 default와 non-default를 순서에 맞지않게 섞을 경우에, 인터프리터가 어떤 값이 어떤 argument를 가르키는지 찾지 못하기 때문이다.
다음 예시와 함께 보자.
def fun1(a="Tom", b="True", x, y):
print a,b,x,y
func1("A", "B", 1)
parameter를 정의할때 defaut(a, b) 값을 non-default value(x, y) 앞에 두었다. 원래는 에러가 나지만 설명을 위해 호출이 가능하다고 가정해보자.
이때 함수 호출 시 default argument는 값을넣어도, 넣지않아도 된다.
따라서 "A", "B", 1
은 각각
1) a, b, x
2) a, x, y
3) a, b, x
4) b, x, y 의 값이 될 수 있다.
이렇게 경우의 수가 여러 개 나오기 때문에, 인터프리터가 입력된 인자값과 parameter를 매치시키지 못하게 된다.
func1("A")
와 같이 인자값을 하나만 넣었을 경우도 넷 중 어떤 parameter에 매치되는지 알 수 가 없다.
이러한 이유로 다음과 같이 default value는 non-default value 뒤에 정의해야만 어떤 값이 어떤 parameter의 값인지 인터프리터가 알 수 있다.
def fun1(x, y, a="Tom", b="True"):
print(a,b,x,y)
func1("A", "B", 1)
위 예시에선 "A", "B", 1
은 각각 순서대로 x, y, a 의 값을 가리키게 된다.
** 인터프리터(interpreter): 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
Author And Source
이 문제에 관하여([Python] default argument는 왜 non-default argument 앞에 오지 못할까 ?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hamsterhamin/Python-default-argument는-왜-non-default-argument-앞에-오지-못할까저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)