def 함수명(인자1, 인자2):
함수 내용
return 아웃풋 할 내용
예를 들어 두개의 인자를 받아 평균값을 구하는 내용의 함수를 만들고 싶다면
def average1(num1, num2):
result = (num1 + num2)/2
return result
average1(5,7)
>>> 6.0
기본 매개변수라는 뜻으로 함수를 선언할 때 부터 인자값을 설정한다.
def average2(num1=5, num2=7):
result = (num1 + num2)/2
return result
average2();
>>> 6.0
기본매개변수를 설정하더라도 함수를 호출할 때 변경할 수 있다.
average2(7);
>>> 7.0
average2(0,10);
>>> 5.0
인자값의 일부에만 parameter default value를 설정할 수도 있다.
def average3(num1, num2, num3=9):
result = (num1 + num2 + num3)/3
return result
average3(2,7);
>>>6.0
average3(2,7,6);
>>>5.0
기본 매개변수를 사용할 때 한가지 지켜야 할 점은, 기본 매개변수를 non-default value parameter의 앞에 배치해야 한다는 점이다.
def average4(num1=5, num2, num3):
result = (num1 + num2 + num3)/3
return result;
SyntaxError: non-default argument follows default argument
이렇게 순서를 바꾸면 문법오류가 발생하는데 이 부분에 대해 두 가지 이유를 생각해 봤다.
1. 기본매개변수가 주어지더라도 추후에 함수를 선언할 때 따로 설정할 수도 있지만, 디폴트값을 사용할 수도 있는데, 이렇게 값의 존재 유무가 불확실하면 다른 인자의 위치가 바뀌어 혼란이 올 수 있기 때문인 것 같다. 만약 마지막 예제에서 num1값을 설정해서 함수를 호출하면 세 인자가 전부 각자의 자리를 찾아가지만, num1을 제외하고 호출하면 나머지 인자의 자리가 한 자리씩 앞으로 당겨져 average4(5,6) 이런 식으로 호출할 수밖에 없다.
2. 파이썬에는 함수의 매개변수 형식의 순서가 있어서 그 순서를 따라야 하기 때문이다.하단에 명시된 순서를 지키지 않으면 역시 syntax error가 발생한다.
non default value
default value (num1 = 3)
variable length positional arguments ( *args)keyword only arguments
non default keyword only arguments
keyword only arguments with defaultsvariable length keyword arguments (**kwargs)
참고: getKT
잘 읽었습니다 ㅎㅎ