훈훈훈

파이썬 : Non-default argument와 Default argument 본문

파이썬/Python

파이썬 : Non-default argument와 Default argument

훈훈훈 2020. 1. 29. 21:04

# default value parameter


default value parameter 는 함수가 호출될때 파라미터에 인자를 받아 넘겨준다.

 

 

# non-default value parameter


non-default value parameter 는 함수가 호출될때 파라미터에 인자를 받아 넘겨줄 수 도 있으며, 인자를 넘겨주지 않아도 

keywordname=value 형식으로 선언되어 있기 때문에 지정한 value 를 넘겨줄 수 있다.

 

파이썬에서는 정의할때 파라미터를 받는 순서를 지켜야한다.

다음 코드를 살펴보면 non-default value parameter 를 먼저 받고 default value parameter를

받을 시 다음과 같은 오류 메시지를 확인할 수 있다.

 

[예제 코드]
[오류 메시지]

 

** default value parameter를 non-default value parameter 앞에 정의 하면 안되는 이유?


먼저, 파이썬에서 파라미터를 받는 순서는 다음과 같으며 이 순서를 지키지 않을 시 오류가 발생한다.

 

def example(a, b, c=None, r="w" , d=[], *ae, **ab)

 

    >  a,b : positional parameter

    >  c=none : optional parameter

    >  r="w" : keyword parameter

    >  d=[] : list parameter

    >  *ae : keyword-only

    >  **ab : var-keyword parameter

 

오류가 발생하는 이유는 파라미터를  정의하는 순서 없이 무작위로 생성 시 함수는 어떤 파라미터에 어떤 값을 받아야 될지 정할 수 없기 때문이다

 

하지만 파이썬3 이상부터는 "*"를 이용하면 다음과 같이 오류 없이 사용할 수 있다.

 

 

*참고 자료

https://stackoverflow.com/questions/16932825/why-cant-non-default-arguments-follow-default-arguments

Comments