return함수가 움직이는 법을 알아보자

김민주·2022년 1월 1일
0
post-thumbnail
  • 함수가 어떠한 기능을 수행하고 돌려줄 값이 있으면 return 명령을 사용
  • 함수 안에서 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와 조합해서 특정 조건일 때 함수 중간에서 빠져나온다.

출처
코딩도장
Python 계단밟기
왕초보를 위한 Python

profile
안녕하세요 :-) 잘 부탁드립니다!

0개의 댓글