def 함수 이름(매개변수1, 매개변수2)
실행 구문
return 반환값태
위의 코드를 살펴보면 크게 문제가 될 것 처럼 보이지 않지만 실행을 시키게 되면...
SyntaxError가 나는 것을 볼 수 있다. 오류 내용을 좀 더 자세히 읽어보면,
Non-default argument는 default argument 따르고(앞에) 있다는 내용을 볼 수 있다.
이렇게 기본값이 부여된 my_name을 뒤로 보내야 실행이 되는데 컴퓨터는 똑똑한데... 알아서 빈 값에 넣어주면 될텐데... 왜 그래야만 하는지 생각해 보았다.
먼저 함수의 매개변수는 위와 같이 순서에 맞춰 실행된다.
함수실행을 위해 값을 넣었을 때, 첫번째 값은 첫번째 매개변수와 두번째 값은 두번째 매개변수와 대응한다.
함수 사용자가 값을 넣었을 때, 값이 비어있는 매개변수에 알아서 가지 못한다.
오류가 일어난 코드를 실행시킨다고 가정해보자 (love_you("아이유"))
이때 사용자가 아이유를 디폴트 값을 대체하려고 한것인지, 디폴트값(my_name="정우성")은 두고, your_name에 넣으려고 했던 것인지 알 수가 없다.
이러한 혼란을 막기 위한 규칙 또 코드의 순차적인 실행 때문이라고 생각했다.
위치 인수
- 실행 코드
- 인수는 위치가 지정된 순서에 대응하여 함수의 매개변수(인자)에 저장된다.
가변 인수
- 위와 같이 함수를 구현할 때 선언한 매개변수 개수에 맞추어, 호출할 때에도 개수에 맞게 파라미터를 넘겨준다.
- 이에 비해 가변인수는 임의 개수의 파라미터를 받는다.
- 매개변수의 이름 앞에 *기호를 붙이면 이 자리 이후로 여러개의 파라미터가 붙을 수 있다.
아래의 오류가 난 코드를 해결하면서, 가변인수의 위치를 알아보자.
Q) **가 붙은 가변키워드 인자와 인수랑 무엇일까?
현재 Syntax Error가 나오고 있는 코드이다.
- 수정코드
- 결과 값