본문 바로가기
Python/Basic Data Analysis

[Python] 기초 함수(Function)

by JKyun 2017. 3. 27.

안녕하세요. 우주신입니다.


이번 포스팅에서는 기초 함수들에 대해 정리해보겠습니다. 



함수는 입력값(inputs), 과정(process), 결과값(outputs)으로 이루어져있습니다.



입력값 12를 넣으면 ?에는 15가 출력되는 것을 예상할 수 있습니다.


특정한 값을 입력받으면 저 상자 안에서 데이터가 처리되고 결과값이 반환되는 전체 과정을 함수라고 보시면 됩니다.


그럼, 파이썬에서는 어떻게 함수를 정의하는지 보겠습니다.


def 함수명(입력 인수):

수행할 문장1

수행할 문장2

...


define의 약자인 def를 사용하여 함수를 정의 합니다.


C 언어나 자바는 함수의 시작과 끝을 { } 중괄호로 나타내지만,

파이썬에는 들여쓰기(Indentation)으로 구분합니다.  즉, 들여쓰기가 끝나는 곳이 함수의 끝입니다.


입력값과 결과값을 기준으로 몇 가지 경우로 나누어 함수를 보겠습니다.




1. 입력값, 결과값이 둘 다 있는 일반적인 경우



mul  함수는 두 개의 입력값 3, 4를 받아서 서로 곱한 결과값을 반환합니다.

이를 변수 result에 넣은 후, 출력했습니다.



2. 입력값만 있는 경우



sum 함수는 두 개의 입력값 3, 4를 받아서 서로 더한 값을 출력합니다.


여기서 주의할 점은 결과값을 반환하는 return 함수가 없다는 것 입니다.


"7이 결과값 아닌가요?" 라고 의문을 가질 수 있지만, 7은 단순히 출력값 입니다.


sum 함수를 실행한 과정에서 print(a+b)를 통해 7이 출력 됐을 뿐입니다.

반환되는 결과값이 있었다면 변수 return에 7이 들어가 print(return)을 통해 7이 출력돼야 합니다.

그러나 None이 출력 됐음을 확인 할 수 있습니다.



3. 결과값만 있는 경우



hey 함수에 입력값을 넣지 않아도 "Hello" 결과값이 반환되는 것을 확인할 수 있습니다.



4. 입력값, 결과값 둘 다 없는 경우



위 3번의 경우를 이해하셨다면, 쉽게 이해가실 겁니다.

nothing 함수에 입력값을 넣지 않고, 변수 result에 아무 값도 들어가지 않는 것을 확인할 수 있습니다.



5. 입력값이 몇 개인지 모를 때는?


프로그래밍을 하다보면 입력값이 딱 정해지지 않을 때가 많습니다. 

이런 경우에는 아주 간단하게 * 기호를 입력변수 앞에 붙이면 해결이 됩니다.

 

for문을 사용하여 변수 args에 있는 값들을 모두 곱하는 mul 함수를 정의했습니다.

입력값을 1, 2, 3을 넣어서 6의 결과값을 얻었습니다.

입력값을 5개 넣어도 잘 작동하는 것을 확인할 수 있습니다.



6. 결과값이 몇 개인지 모를 때는?


모를 수가 없습니다! 당연한 소리지만, 함수의 결과값은 무조건 하나이기 때문입니다~


그럼, 곱셈과 나눗셈 두 결과값을 동시에 받을 수 있는 방법은 없는건가요?


우선, return을 두 번 써봤습니다.

a*b 값만 반환되는 것을 확인할 수 있습니다. 

모든 함수는 return을 만나는 순간 함수에서 빠져나오기 때문에 그 뒤 문장들은 다 무시가 되기 때문이죠.


이 경우 결과값을 튜플의 형태로 반환하는 것을 확인할 수 있습니다.

(8, 2.0) 자체는 결과값이 하나이므로 전혀 문제가 되지 않습니다.


이를 활용하여 밑과 같이 결과값의 개수에 맞춰 변수를 2개로 정하면 a에는 8이 b에는 2.0이 입력됩니다.






수고하셨습니다.










댓글