Python arguments

lentos·2020년 5월 27일
0
post-thumbnail

위치 인수(positional arguments)와 가변 인수(variable length arguments)의 호출 순서

func_param_with_var_args 함수는 현재 (위치 인수, 가변 인수, 위치 인수) 순서로 값을 호출하고 있다. 위치 인수 보다 가변 인수가 앞에 있을 경우 뒤 쪽의 위치 인수가 불러올 값까지 모두 호출해오기 때문에 문제가 생긴다.

따라서 함수의 인수들의 순서를 정렬 해주고 위치 함수들의 위치를 정리해주면 정상적으로 코드가 작동하게 된다.

키워드 인수(keyword arguments)와 가변 키워드 인수 (variable length keyword arguments)의 호출 순서

func_param_with_kwargs 함수는 현재 (위치 인수, 위치 인수, 가변 키워드 인수, 디폴트 키워드 인수) 순서로 값을 호출한다. 위치 인수의 순서는 잘 지켜지고 있지만 가변 키워드 인수가 키워드 인수의 앞에 오게 되어 mobile="01012341234", address="seoul" 두개의 키워드 호출 값을 모두 가져와버린다. 뒤 쪽의 키워드 인수는 호출해올 값이 없이 때문에 문제가 생긴다.

따라서 가변 키워드 인수와 키워드 인수의 순서를 바꿔주기만 하면 함수를 호출할 때 가져오는 값의 순서는 바꿔주지 않아도 잘 작동하게 된다.

다양한 인수 호출 방법을 사용 시 주의해야 할 순서

mixed_params 함수는 현재 (디폴트 위치 인수, 가변 인수, 위치 인수, 가변 키워드 인수, 키워드 인수) 순으로 값을 가져온다.

가변 인수를 위치 인수들 뒤로 옮겨도 문제가 발생하는데 위치 인수 안에서도 디폴트 값을 가진 인수는 디폴트 값이 없는 위치 인수 뒤에 와야 한다. 호출된 값이 앞의 위치 인수부터 채워나가고 갯수가 모자라면 적용된 디폴트 값이 인수에 들어가는데 디폴트 위치 인수가 먼저 나오면 뒤쪽의 디폴트 값이 없는 인수는 호출할 값이 없어 문제를 일으키게 된다. 그리고 키워드 인수 역시 가변 키워드 인수 보다 앞에 와야 하기 때문에 순서에 맞게 수정해주면 코드가 잘 작동하게 된다.

0개의 댓글