Python 기초

함수란?

함수(function)는 특정 작업을 수행하는 명령어들의 모음에 이름을 붙인 것입니다. 우리는 이미 많은 함수들을 사용하였습니다.

화면에 무엇인가를 출력할 때 사용하도 print(), 입력을 담당하는 input(), 절대값을 반환하는 abs() 모두 함수입니다.

 

함수는 작업에 필요한 데이터를 전달받을 수 있으며, 작업이 완료된 후에는 작업의 결과를 호출자에게 반환할 수 있습니다.

함수는 입력을 받아 처리한 후에 결과를 반환하는 상자로 그릴 수 있습니다.

예를 들어 아래 그림의 h 함수는 외부로부터 사과 한 개를 받아 사과를 반으로 잘라 반환합니다.

 

function에 대한 이미지 검색결과

 

함수 안의 명령어들을 실행하려면 함수를 호출(call)하면 됩니다. 예를 들어 다음과 같은 문장을 봅시다.

value = abs(-100)

 

abs(-100)이라는 수식을 이용하여 수식을 이용하여 프로그램은 abs() 함수를 호출할 수 있습니다.

abs() 함수는 -100을 받아 절대값 100을 계산하여 반환하게 됩니다. 함수의 반환값은 변수 value에 저장됩니다.

 

함수는 초창기부터 많은 프로그래밍 언어에서 지원하고 있으며 동일한 함수를 여러 차례 호출할 수 있기 때문에 코드를 재활용하는 기술입니다.

즉 동일한 작업을 하기 위하여 코드를 복사할 필요가 없습니다. 함수를 사용하면 코드를 간결하게 유지할 수 있습니다.

또 하나의 큰 프로그램을 나누어서 작성할 수 있어서 구조화된 프로그래밍이 가능합니다.

구조화된 프로그래밍이란 프로그램 작성 방법론의 일종입니다.

또한 특정한 동작을 하는 코드가 독립적으로 작성되어 있기 때문에 코드의 일부를 수정하는 것도 쉬워집니다.

 

함수의 필요성

우리는 생활하면서 한정된 자원을 재활용해야한다는 이야기를 많이 듣습니다. 프로그래밍에서는 어떨까요?

컴퓨터의 자원도 한정되어 있습니다. 프로그램 코드를 저장할 수 있는 공간도 한정되어 있는 것입니다.

프로그램을 작성하다보면 동일한 처리를 반복해야하는 경우가 많이 발생합니다.

따라서 우리가 이미 작성한 코드를 재활용하여 사용할 수 있으면 좋을 것입니다. 아래의 코드를 보겠습니다.

sum1 = 0;
for i in range(1, 11)
    sum1 += i;

...

sum2 = 0;
for i in range(1, 21)
    sum2 += i;

 

위의 코드를 보면 2개의 코드 조각은 아주 유사합니다.

첫 번째 조각은 1부터 10까지의 합을 계산하는 코드 조각이고 두 번째는 1부터 20까지의 합을 계산하는 코드 조각입니다.

정수의 합을 계산하는 코드 조각이 반복하여 표기되었습니다.

정수의 합이 필요할 때마다 동일한 코드를 복사하여 붙여넣기 하여도 됩니다. 하지만 이것은 상당히 귀찮은 작업입니다.

이 2개의 코드 조각을 합쳐 하나로 만들면 코드의 길이가 거의 절반으로 줄어들 것입니다.

 

이러한 경우에 유용하게 사용할 수 있는 도구가 함수입니다.

함수를 이용하면 우리가 여러 번 반복해야 되는 처리 단계를 하나로 모아서 필요할 때 언제든지 호출하여 사용할 수 있습니다.

위의 코드는 아래 코드와 같이 수정할 수 있습니다.

def get_sum(start, end):
    sum = 0
    for i in range(start, end+1)
        sum += i
    return sum

...

get_sum(1, 10)
get_sum(1, 20)

 

NOTE

함수는 프로그래밍 언어에 따라 서브루틴, 루틴, 메소드, 서브 프로그램이라고도 합니다.

 

NOTE

함수를 사용하지 않고 코드를 복사하는 방법의 단점은 아래와 같습니다.

  1. 코드의 길이가 증가합니다.
  2. 가독성이 떨어집니다.
  3. 구분선을 그리는 코드를 수정하려면 여러 곳을 고쳐야 합니다.
  4. 유지 관리가 어렵습니다.

 

함수를 직접 작성하여 사용해봅시다.

이제까지는 파이썬이 기본적으로 제공해준 print()나 input() 등 이미 있는 함수만을 사용하였습니다.

이제부터는 함수를 직접 작성하여 사용할 것입니다. 다음 절에서 함수를 정의하는 작업부터 살펴볼 것입니다.