default value parameter
-> def human(a, b = "홍길동") 에서 b를 말함
non-default value parameter
-> def human(a, b)
positional arguments (위치인수)
-> non-default value parameter를 말함
variable length arguments (가변인수)
-> def human(a, b, args) 에서 args를 말함
variable length keyword arguments (가변 키워드 인수)
-> def human(a, b, ** kwargs)에서 kwargs를 말함
코드를 실행하면 다음과 같은 에러가 나타난다.
SyntaxError: non-default argument follows default argument
이러한 현상은 default value parameter, 즉[name="Tori"]를 먼저 사용했기 때문이다.
10이라는 값이 name인수와 age인수 중에 어디에 들어가야 할지 알지 못해서 일어나는 현상같다.
순서를 바꿨을때는 에러가 나타나지 않는다.
위쪽의 코드를 실행시켰을때 오류가 뜬다.
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
애러가 나는 이유는 args가 정해지지 않은 가변적인 인수이기 때문이다. args가 age가 가져야할 20까지 전부 가져가버려서 애러가 뜬다고 생각한다.
name=정우성
args=('seoul', 20)
age=01012341234
age를 앞으로 보내주면 제대로 출력된다.
위쪽 코드가 또 오류가 뜬다.(구문오류라고 뜬다.)
SyntaxError: invalid syntax
이 문장은 default parameter보다 ** kwargs가 먼저 나와서 오류가 떳다 구문오류라서 그냥 외워야 될듯 하다.