7. 함수 > 7-1. 함수란?

함수란?

해당 파트는 아래 영상들을 시청 후 교안을 정독해주세요.

  1. 함수
  1. 함수를 사용하는 이유

함수

함수는 반복적으로 사용되는 기능을 하나의 부품으로 만든 것입니다. 기능이 필요할 때마다 매번 코드를 작성하기보다는, 이미 해당 기능이 내장된 부품으로서 함수를 가져와서 사용하기 위한 거죠. 이 경우 코드의 길이나 편리성 부분에서 엄청난 이점이 있겠죠?

우리는 이미 앞에서 꽤나 많은 함수들을 배웠어요. input(), print(), type() 등 과 같은 함수들이죠. 그치만 이 함수들은 파이썬 시스템에 내장되어 제공되는 함수들입니다. 이번 '함수' 챕터에서는 우리가 직접 함수를 만들어 볼 겁니다.

함수의 형태

함수에 대해 본격적으로 알아보기 전, 간단히 함수의 형태를 알아봅시다. 함수의 기본 형태는 다음과 같습니다.

def 함수명 (매개변수):
  수행문
  수행문
  ...

여기서 매개변수는 값을 전달받는 변수를 지칭합니다. 좀 더 확실한 이해를 위해 아래 예시를 살펴봅시다.

def square (x):
  y = x**2
  return y

값을 넣으면 제곱값을 반환하는 함수를 만들었습니다. 이름은 제곱을 영어로 한 square , 수행식은 매개변수에 제곱을 한 값을 y 변수에 할당하는 내용을 담고 있습니다. 그런데 그 후 return 은 뭘까요? return함수의 출력값으로 무엇을 반환할지 지정해주는 기능을 합니다. 예컨대, 위 함수 square 에서는 y, 즉 x 의 제곱값이 함수의 출력값이 되겠죠? square 함수에 실제로 값을 입력해보면 아래와 같이 기능합니다.

square(5) #출력값은 25

살펴볼 점

함수를 사용할 때는 살펴볼 점들이 있습니다. 기능도 모르고 무턱대고 쓸 수는 없으니까요. 살펴볼 점들은 아래와 같습니다.

  • 함수의 이름
  • 함수의 용도
  • 입력으로 들어가야 하는 값
  • 반환(출력)되어 나오는 값

그런데 이번엔 직접 함수를 만들어본다고 했죠? 그 말은, 위의 살펴볼 점들을 우리가 스스로 채워가야 한다는 거에요. 본격적으로 함수를 만들기 전, 위 요소들을 결정할 때 주의할 점들을 살펴보고 갈게요.

  • 함수의 이름은 함수의 용도를 명확히 드러내야 합니다. 예컨대 사용자의 수를 세는 함수를 만들었다면 이 함수의 이름은 user_count() 정도가 될 수 있겠죠? 만약 귀찮은 마음에 user() 와 같이 함수 이름을 지었다면, 다른 이들이 함수를 보고 기능을 파악하기 어려울 거에요. 본인도 헷갈릴 수 있고요!

  • 하나의 함수에는 하나의 용도 혹은 기능이 들어가는 것이 좋습니다. 예컨대 현재 접속한 사용자들을 대상으로 풍선 아이템을 주기로 했다고 할게요. 이를 balloon_to_active_user() 와 같이 하나의 함수로 만들 수도 있을 거에요. 그치만 다음 이벤트로는 접속한 사용자들에게 신발 아이템을 주려고 계획 중이에요. 이 경우 신발 아이템을 주기 위해서는 새로운 함수를 만들어야 한다는 거죠. 만약 앞선 함수를 active_user_list()balloon_giveaway() 함수로 만든다면 추후에도 함수의 재활용이 가능할 거에요. 신발 아이템을 주기 위해서는 active_user_list() 를 통해 접속 사용자 리스트를 뽑아내고 shoes_giveaway() 함수를 만들어 사용할 수 있겠죠. 함수는 부품과도 같다는 걸 기억하세요! 부품이 서로 합쳐져 있다면 다양한 상황에서 사용하기가 힘들답니다.

  • 매개변수의 자리에 실제로 입력되는 값은 '인수'라고 합니다. 매개변수는 말 그대로 값을 받는 역할만 하기 때문에 실제 값을 지칭하지는 않습니다!

  • 모든 함수가 반환값을 가지지는 않습니다. 앞서 함수의 형태를 보여드릴 때 return 이 수행문 뒤에 적혀있지 않은 이유도 이 때문입니다. 수행문만 실행되고 반환값이 없는 함수도 존재한다는 거죠. return 이 존재한다고 해도, 뒤에 오는 값- 즉 반환값이 수행문의 결과를 반드시 반영하는 것도 아닙니다. 아래 예시를 살펴볼까요?

    def square (x):
      y = x**2
      return x
    
    square(5) #출력값은 5
    

    수행문은 분명 매개변수 x 값의 제곱값을 만들어내고 있지만, 함수에 인수 5를 입력하니 출력값으로 5가 나옵니다. 이는 당연하게도 return 뒤에 오는 값이 y가 아닌 x, 입력값 그 자체이기 때문이죠. 이처럼 함수의 수행문 내용과 반환값이 전혀 관련이 없이 함수를 만들 수도 있다는 점을 기억합시다!

마지막으로 업데이트 된 날짜:
2022년 9월 24일