29.3 함수의 결과를 반환하기

앞에서 만든 add 함수는 두 수를 더해서 바로 출력했습니다. 그러면 함수에서 값을 꺼내 올 수는 없을까요?

다음과 같이 함수 안에서 return을 사용하면 값을 함수 바깥으로 반환합니다(return에 값을 지정하지 않으면 None을 반환).

def 함수이름(매개변수):
    return 반환값

그럼 두 수를 더해서 반환하는 add 함수를 만들어보겠습니다. 함수 add에 매개변수에 ab를 지정하고 그다음 줄에서 return으로 ab를 더한 값을 반환하도록 만듭니다.

>>> def add(a, b):
...     return a + b
...

이제 add 함수에 10과 20을 넣고 결과를 x에 저장합니다. 그리고 x의 값을 출력해봅니다.

>>> x = add(10, 20)
>>> x
30

x의 값을 출력해보면 10과 20을 더한 값인 30이 나옵니다. 이처럼 return을 사용하면 값을 함수 바깥으로 반환할 수 있고, 함수에서 나온 값을 변수에 저장할 수 있습니다.

즉, return으로 반환하는 값은 반환값이라고 하며 함수를 호출해준 바깥에 결과를 알려주기 위해 사용합니다.

add 함수의 호출 과정을 그림으로 표현하면 다음과 같은 모양이 됩니다.

그림 29-3 함수의 반환값을 변수에 저장

반환값은 변수에 저장하지 않고 바로 다른 함수에 넣을 수도 있습니다. 다음은 print에서 바로 add를 호출하여 결과를 출력합니다.

>>> print(add(10, 20))
30
참고 | 매개변수는 없고 반환값만 있는 함수

함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있습니다. 다음은 매개변수 없이 1만 반환합니다.

>>> def one():
...     return 1
...
>>> x = one()
>>> x
1
참고 | return으로 함수 중간에서 빠져나오기

return은 값을 반환하는 기능뿐만 아니라 함수 중간에서 바로 빠져나오는 기능도 있습니다. 다음은 매개변수 a가 10이면 함수를 그냥 빠져나옵니다.

>>> def not_ten(a):
...     if a == 10:
...         return
...     print(a, '입니다.', sep='')
...
>>> not_ten(5)
5입니다.
>>> not_ten(10)
>>> 

not_ten 함수에 5를 넣으면 print'5입니다.'를 출력하지만, 10을 넣으면 return으로 함수 중간에서 바로 빠져나오므로 그 아래에 있는 print는 실행하지 않습니다. 따라서 아무것도 출력되지 않습니다.

이처럼 return은 함수 중간에서 빠져나올 때 자주 사용합니다. 보통은 if와 조합해서 특정 조건일 때 함수 중간에서 빠져나옵니다.