[Python] 기초 함수(Function)
안녕하세요. 우주신입니다.
이번 포스팅에서는 기초 함수들에 대해 정리해보겠습니다.
함수는 입력값(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이 입력됩니다.
끝
수고하셨습니다.