TigerCow.Door


안녕하세요.

오늘은 파이썬에서 함수에 관해 이야기를 해보겠습니다.

지금까지 우리가 앞에서 이야기했던 것들을 바탕으로 진행되며, 함수는 프로그래밍에 있어서 기본이 되기 때문에

헷갈리거나 오류가 발생하는 부분이 있다면 언제든지 말씀해주세요 :)


1. 함수


함수가 무엇일까요?

예를 들어, 고무라는 재료를 공장에 넣어서 슬리퍼라는 결과물을 만들어내는 과정이 있다고 생각해봅시다.

이를 프로그래밍으로 생각해본다면, 고무는 입력값 또는 인자가 되는 것이고

공장은 함수가 됩니다. 그리고 나온 결과물 슬리퍼는 출력값, 결과값이 되는 것이죠.


이러한 함수를 사용하는 이유는, 프로그래밍을 하면서 반복되는 작업을 보다 수월하게 하기 위해서이기도 하고 하나의 프로그램을 보다 잘 확인하기 위해서입니다.

슬리퍼를 만들기 위한 작업을 많이 작업하는데 작업을 할때마다 그 공장을 매번 만들거나, 몇 번 작업하는지 제어문에 대한 반복을 매번 수정하는 것보다, 슬리퍼를 만드는 함수 하나를 만들어 놓고 필요할 때마다 호출하는 것이죠.

또한 이러한 함수를 한번 만들어 놓고 그대로 사용하기 때문에 그 흐름을 보다 일목요연하게 살펴볼 수 있습니다.



2. 파이썬 함수의 구조


파이썬에서 함수의 기본적인 구조는 아래와 같습니다.


def <함수명>(입력 인수 또는 인자):

<수행할 문장1>

<수행할 문장2>

...


이러한 함수 내부에서는 우리가 앞에서 살펴보았던 제어문이나 기타 개념들이 동일하게 사용될 수 있습니다.

두 개의 정수를 받아서 그 결과를 반환하는 함수를 예시로 작성하면 아래와 같습니다.



위의 코드에서 return은 함수의 결과값을 돌려주는 명령어 입니다.

즉, 위의 코드를 살펴보면 먼저 입력받은 a와 b를 더해서 c에 저장합니다.

그리고 c를 결과값으로 반환하는 함수입니다.



3. 함수의 4가지 유형


이러한 함수에는 크게나눠서 총 4가지의 유형이 있습니다.

하나씩 소개해드리겠습니다.



3-1. 일반적인 함수(입력값과 출력값이 존재하는 함수)


위에서 살펴봤던 함수처럼, 일반적인 함수는 입력값과 출력값이 모두 존재합니다.



위의 코드를 살펴보시면, function1 이라는 함수는 입력값 2개를 받습니다.

그리고 입력받은 2개의 값을 곱해서 그 값을 반환, 즉 출력하도록 되어있습니다.



3-2. 입력값이 없는 함수


두번째로 소개해드릴 유형은, 입력값이 없는 함수 입니다.

즉, 입력값은 존재하지 않지만 출력값은 존재합니다.



위의 코드를 보시면, function2 함수는 입력값을 받지 않습니다.

하지만 함수 내부에서 '입력값이 없는 함수'라는 문자열을 결과값으로 반환합니다.



3-3. 결과값이 없는 함수


세번째로 소개해드릴 유형은, 결과값이 없는 함수입니다.

즉, 입력값은 존재하지만 결과값, 출력값은 존재하지 않는 함수입니다.



위의 코드를 보시면, function3 함수는 두개의 입력값을 받습니다.

그리고 내부에서 입력받은 두 값을 더해서 출력하고 따로 반환하지 않고 끝나게 됩니다.

이러한 함수를 결과값이 없는 함수라고 합니다.



3-4. 입력값과 결과값 모두 없는 함수


마지막으로 소개해드릴 함수는 입력값과 결과값이 모두 없는 함수입니다.



위의 코드를 보시면 function4 함수는 입력값과 출력값이 모두 없습니다.

단지 함수를 호출하면, '입력값과 함수값이 모두 없는 함수'라는 문자열을 출력하게 됩니다.



4가지의 함수 유형을 살펴보았는데, 이들은 자신이 구현하고자 하는 내용에 맞춰서 사용하시면 됩니다.



4. 입력값의 개수를 모를 때


우리가 함수를 만들면서, 몇개의 입력값이 들어올지 모르는 경우가 있습니다.

예를 들어, 우리가 원하는 정수들의 합을 모두 구하고 싶을 때, 그 정수들이 무조건 2개 또는 3개이라는 법은 없죠.

이럴때 사용하는 방법이 있습니다.

아래의 형태와 같이 입력 변수값 앞에 * 를 붙이면 됩니다.


def <함수형>(*입력 변수):

<수행할 문장1>
...


이를 토대로 여러개의 정수를 더하는 함수를 만들어보면 아래와 같습니다.



코드를 보시면 짐작하실 수 있겠지만, 우리가 여러개의 입력을 받을 것이라고 해두었던 *입력변수 는 여러개의 입력값을 받아서 튜플의 형태로 가지게 됩니다.

따라서 for 문을 통해 입력받은 여러개의 변수를 확인할 수 있게 됩니다.



5. 함수의 입력값에 초기값 설정하기


이번에는 함수의 입력값에 초기값을 미리 설정하는 방법을 알아봅니다.

예를 들어, a,b,c 라는 세개의 입력을 받는 함수가 있는데 특정한 일이 없으면 c는 항상 10으로 초기에 설정해두고 싶다면 아래와 같은 방법을 사용하면됩니다.



위의 코드를 보시면 입력 변수를 받을 때, c = 10 으로 초기값을 설정해 두었습니다.

이렇게 해두면 첫번째 result 를 에서 반환하는 것과 같이 따로 c에 값을 입력하지 않으면 10이라는 값으로 함수에서 처리합니다.

하지만 두번째 result를 반환하는 것과 같이 c에 값에 20이란 값을 입력으로 넣으면 초기값과 상관없이 입력한 20의 값으로 함수가 처리됩니다.




이렇게 해서 함수에 대한 전반적인 이야기를 해보았습니다.

좀 더 궁금하다 또는 자세한 설명이 필요한 점은 댓글을 남겨주세요! 보완하겠습니다.

다음에는 사용자의 입출력 또는 파일IO에 대해서 살펴보겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요