함수는 일정한 작업을 수행하는 코드블럭이다.
함수를 사용하면
개념적으로만 봤을때 함수는 수학의 함수와 동일하다.
즉 input이 있고 output이 있는 아주 간단한 구조다.
파이썬에서 함수는 def 키워드를 사용하여 정의되며, 다음과 같은 문법을 갖는다.
def 함수명(parameter):
문장1
문장2
...
문장N
[return 리턴값]
parameter 와 return 은 optional 이다.
Input parameter가 없는 함수도 있을 수 있으며 리턴값이 없는 함수도 있다.
return 값은 함수에서 해당 함수를 호출한 주체에게 결과값을 보내주는 것이다.
예를 들어, 어떠한 수가 prime number(소수) 인지를 계산하는 로직을 구현한다면 다음과 같이 구현 할 수 있다 (참고로 소수는 1과 자기 자신 이외에 나누어 떨어지는 수가 없는 수를 말한다).
n = 11 #1 혹은 그 이하이면 소수가 아니다 if (n <= 1): return False #2 와 3은 소수 이다 if (n <= 3): return True #2 나 3으로 나누어 떨이지면 소수가 아니다 if (n % 2 == 0 or n % 3 == 0): return False i = 5 while(i * i <= n): if (n % i == 0 or n % (i + 2) == 0) : return False i = i + 6 return True
만일 위의 소수 계산을 여러번 반복 해서 해야 한다면 위의 코드를 여러번 중복되게 사용해야 한다.
그러면 코드의 가독성도 떨어진다.
그럼으로 반복적으로 실행하는 코드는 다음 처럼 함수로 정의한 후 간단하게 함수를 호출 하는 식으로 사용하게 된다.
이제 함수를 원하는 값을 parameter로 넘겨줘서 호출 하면 된다.
is_eleven_prime = is_prime(11) print(f"11 is prime? {is_eleven_prime}") is_ten_prime = is_prime(10) print(f"10 is prime? {is_ten_prime}")
여기서 볼 수 있듯이 함수를 사용하면 코드를 반복적으로 구현하지 않아도 됨으로 코드 양이 적어지고 또한 함수 이름 자체가 코드의 기능을 설명하기 때문에 코드에 대한 이해가 높아져서 가독성이 높아진다.