return
명령을 사용return
에 값을 지정하지 않으면 None
을 반환한다.return
명령어를 만나면 함수가 종료된다.return
명령어는 하나의 함수에 여러 번 나올 수 있다. 하지만 1번만 사용하는것이 좋다.def 함수이름(매개변수):
return 반환값
def add(a, b):
return a + b
x = add(10, 20)
print(x)
30
return이 아니라 print()가 들어가 있으면?
def f2(x):
a = 3
b = 5
y = a * x + b
print(y) # y 값을 출력한다
d = f2(10) # d = ?
35
print(d)
None
d = f2(10)
이라고 하면 f2()
함수가 실행되어 35가 화면에 나타나지만 d
에게 값을 반환하지는 않는다. 그래서 d
를 프린트해보면 아무 값이 없다는 뜻으로 None
이 출력된다.
def f1(x):
a = 3
b = 5
y = a * x + b
return y # y 값을 반환한다
c = f1(10) # c = 35
print(c)
35
이렇게 만들어진 함수에 10이라는 인자를 넣어주면 함수는 35라는 값을 돌려준다. 따라서, 그 값을 다시 c
라는 변수에 넣을 수도 있는 것이다.
예1)
# n ~ m 사이의 합계 구하는 함수
def sum(n=1, m=100):
if n > m: # 앞의 갚이 크면 교환합니다.
n, m = m, n
s = 0
for i in range(n, m+1):
s += i
return s
s = sum(1, 3) + sum(1, 5) + sum(1, 10)
print("합계 :", s)
print("{0}~{1}까지 합 : {2}".format(1, 100, sum()))
print("{0}~{1}까지 합 : {2}".format(1, 10, sum(1, 10)))
print("{0}~{1}까지 합 : {2}".format(1, 1000, sum(1, 1000)))
# 이때도 올바른 값이 나와야 합니다.
print("{0}~{1}까지 합 : {2}".format(10, 1, sum(10, 1)))
print("{0}~{1}까지 합 : {2}".format(10, 10, sum(10, 10)))
# 실행결과
합계 : 76
1~100까지 합 : 5050
1~10까지 합 : 55
1~1000까지 합 : 500500
10~1까지 합 : 55
10~10까지 합 : 10
예2)
def is_even_number1(number):
if number % 2:
return False
else:
return True
def is_even_number2(number):
if number % 2:
result = False
else:
result = True
return result
def is_even_number3(number):
return False if number % 2 else True
def is_even_number4(number):
return number % 2 == 0
def is_odd_number(number):
return number % 2 != 0 # return을 만나면 함수 종료
print('홀수' if number % 2 != 0 else '짝수') # 실행 안됨
number = 12
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number1(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number2(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number3(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number4(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '홀' if is_odd_number(number) else '짝'))
print()
number = 11
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number1(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number2(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number3(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '짝' if is_even_number4(number) else '홀'))
print('{0}는(은) "{1}수"입니다.'.format(number, '홀' if is_odd_number(number) else '짝'))
print()
# 실행결과
12는(은) "짝수"입니다.
12는(은) "짝수"입니다.
12는(은) "짝수"입니다.
12는(은) "짝수"입니다.
12는(은) "짝수"입니다.
11는(은) "홀수"입니다.
11는(은) "홀수"입니다.
11는(은) "홀수"입니다.
11는(은) "홀수"입니다.
11는(은) "홀수"입니다.
📎 참고) 매개변수는 없고 반환값만 있는 함수
함수를 만들 때 매개변수는 없지만 값만 반환하는 함수를 만들 수도 있다.def one(): return 1 x = one() print(x)
# 실행결과 1
📎 참고) return으로 함수 중간에서 빠져나오기
return
은 값을 반환하는 기능뿐만 아니라 함수 중간에서 바로 빠져나오는 기능도 있다.def not_ten(a): if a == 10: return # 10이면 아래 print()함수를 실행하지 않는다 print(a, '입니다.', sep='') print(not_ten(5)) print(not_ten(10))
# 실행결과 5입니다. # 아무것도 출력되지 않음
이처럼
return
은 함수 중간에서 빠져나올 때 자주 사용한다. 보통은if
와 조합해서 특정 조건일 때 함수 중간에서 빠져나온다.