여러분, 함수가 무엇일까요?
물론 함수에 대해 계속 배워왔지만, 결정적으로 빠진 내용이 하나 있습니다. 사실은 우리가 초등학교 때부터 배워왔던 것이기도 합니다. 과연 그것이 무엇일까요?
이 그림 낯익으시죠? 함수에 x를 집어 넣으면 함수가 계산해서 y라는 값을 돌려주는 그림입니다.
함수에 값을 넣으면 함수는 계산된 값을 돌려준다. 이것이 바로 함수의 핵심이지요. 프로그래밍에서도 마찬가지입니다. 지금까지 우리가 만든 함수들은 일은 열심히 하지만 돌려주는 것은 없었지요.
그렇다면 이젠 일도 하고 결과를 돌려주기도 하는 함수를 만들어 봐야겠죠?
>>> def f1(x): ... a = 3 ... b = 5 ... y = a * x + b ... return y # return y ... >>> c = f1(10) # c = 35 >>> print(c) 35
위의 그림과 같은 역할을 하는 함수 f1()
을 만들어봤습니다. 값을 돌려주기 위해 return
이라는 것이 쓰였지요? 이렇게 만들어진 함수에 10
이라는 인자를 넣어주면 함수는 35
라는 값을 돌려줍니다. 따라서, 그 값을 다시 c
라는 변수에 넣을 수도 있는 거죠.
만약, 함수를 정의할 때 return y
대신에 print(y)
라고 썼다면 어떻게 될까요?
>>> def f2(x): ... a = 3 ... b = 5 ... y = a * x + b ... print(y) # print y ... >>> d = f2(10) # d = ? 35 >>> print(d) None
d = f2(10)
이라고 하면 f2()
함수가 실행되어 35
가 화면에 나타나지만 d
에게 값을 반환하지는 않죠. 그래서 d
를 프린트해 보면 아무 값이 없다는 뜻으로 None
이 출력됩니다.
어떠세요? 이제 함수가 값을 반환하는 것에 대해서 이해가 되시나요? 그렇다면 값을 반환하는 함수를 직접 만들어 보실 차례입니다.
삼각형의 넓이를 구하는 함수를 만들어보세요.
함수의 인자로는 삼각형의 밑변과 높이가 주어지고, 반환(return) 값은 삼각형의 넓이가 되는 겁니다. 간단하겠죠?
문제를 풀어보신 분께는 신기한 것을 하나 알려드리겠습니다.
아직 안 풀어보셨으면 빨리 해보세요.
다 풀어보셨죠? 그럼, 알려드리도록 하겠습니다.
참과 거짓
1 더하기 1은 2 맞죠? '참', '거짓'으로 대답해 보세요.
'참'이라고 대답하셨나요?
그럼 파이썬은 이 질문에 어떻게 대답할까요?
>>> 1 + 1 == 2 True
참이라고 답을 하네요.
>>> 1 + 1 == 3 False
이건 거짓이라고 하구요.
다음의 if 문을 보세요.
1 + 1이 2가 맞으면 'yes'라고 대답하고, 그렇지 않으면 'no'라고 대답하겠죠?
>>> if 1 + 1 == 2: ... print('yes') ... else: ... print('no') ... yes
방금 알려드린 것과 함께 생각해 보면
1 + 1 == 2
라는 식이 True
(참)이면 yes
를, False
(거짓)이면 no
를 프린트한다는 걸 알 수 있습니다.
우리가 함수를 만들 때 이런 성질을 활용하면 도움이 되겠죠?
쉬운 덧셈 문제를 내는 함수를 만들어 보겠습니다.
>>> def quiz(): ... ans = input('1 + 2 = ') ... return 1 + 2 == int(ans) ...
input()
이라는 함수는 사용자로부터 문자열 입력을 받는데 쓰이구요, int()
함수는 문자열을 정수로 바꿔줍니다. 예제에서는 input()
함수가 1 + 2 =
이라는 문자열을 출력한 다음 사용자로부터 문자열을 입력 받아 그 값을 ans
라는 변수에 넣어줬습니다.
셋째 줄에서는 1 + 2
의 값과 int(ans)
의 값이 같은지를 나타내는 True
나 False
로 반환하겠죠?
답을 맞히면 True
를 돌려주고, 틀리면 False
를 돌려주는 것이죠. 이해가 되시는지요?
위에서 만든 퀴즈를 다음과 같이 풀어볼 수 있습니다.
>>> quiz() 1 + 2 = 3 True >>> quiz() 1 + 2 = 4 False