TIL-23 python(위치인수, 가변인수)

이동근·2021년 1월 13일
0

python

목록 보기
9/18

위치인수와 가변인수가 들어간 함수이다.


Run 시키게 되면

이런식으로 오류가 뜨게 된다.

TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

이런식의 오류는 데이터 유형에 관련된 오류이다. age는 position 인데 Keyword가 요구되어졌다고 한다.
해결 방법으로 데이터의 순서를 바꿔주게 되면

*arg를 뒤로 보내주고, position인수 age를 앞으로 땡겨줬다.

결과값이 제대로 나오게 된다.~~~!!

그 이유는 무엇일까?
-> position과 keyword는 맨처음에 오고 그 중에서도 position이 제일 처음으로 와야한다. 그 다음으로, 가변인수(variable length argument)가 순서상으로 맨 마지막에 와야한다.

그 다음에는 가변 키워드 함수(variable length keyword arguments)의 위치 관련해서 에러가 떴다. 해결하고 무슨오류인가용??


이번 사고뭉치는 가변키워드함수이다.

순서에 집착하는 놈들 답게 엮시 오류가 났다. 이번 오류는 'invalid syntax'이다.

invalid syntax

이 말인 즉슨 구문에러 즉 소스에러가 잘못 됬다는 말로 문법을 잘못 썼다는 말이다.

다시 제대로 줄세우기를 해주면,

가변키워드 함수를 맨 뒤로 보내주는 형식으로 순서를 positional 함수 name과 age를 맨 앞으로 보내주고 가변키워드 인수(Variable length keyword arguments)가 위치하고 마지막으로 가변키워드 함수(Variable length keyword arguments)순서로 적어 주었다.
그래서 현재 순서는 positonal 값 -> default value -> 가변 키워드 함수 순으로 적어주게되니!!!

값이 제대로 나왓다.~!!!!!

마지막은 다 들어가있다. 위치인수, 가변인수, 가변키워드인수가 모두 들어가있다.

침착하게 보면

가변인수, 위치인수, 가변키워드 인수가 모두 들어가 있는것을 볼수 있고 역시나

inalid sytax- 문법 자체가 틀렸으니 순서를 제대로 나열해라
value에 따라서 20이 맨 처음이니까 age를 맨 앞에써준 후 가변인수 *arg를 써주고 postional인 age를 써준다.그 후 가변키워드 인수인 **kwargs를 맨 뒤로 보내주고 address를 앞으로 땡겨주면 끝!!


이런식으로 변경해주게 되면

제대로된 결과값을 얻을 수 있다.!!

profile
하루하루 1cm 자라는 개발자

0개의 댓글