[Python] 함수에서 return의 쓰임

미남잉·2021년 10월 20일
2



함수에서 return의 쓰임

1. 결괏값 반환

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

위 코드에서 return함수의 결괏값을 돌려주는 명령어입니다.

함수는 입력값을 받아 어떤 처리를 한 후에 결괏값을 돌려주는 형태이기 때문인데요.

그래서 일반적인 함수의 형식은

def 함수 이름(매개변수):
	수행할 문장
    ...
    
    return 결괏값

을 갖습니다.

함수에서는 결괏값을 오직 return 명령어로만 돌려받을 수 있습니다.

만약 결괏값이 없는 경우라면 반환값으로 None을 출력할 것입니다.



2. 함수를 빠져나가는 기능

def say_nick(nick):
	if nick == "바보":
    		return
    	print("나의 별명은 %s입니다." % nick)

위 함수는 '별명'을 입력으로 전달받아 출력하는 함수입니다.

이 함수 역시 반환 값(결괏값)은 없습니다.

문자열을 출력하는 것과 반환 값이 있다는 것은 전혀 다른 개념입니다. 함수의 반환 값은 오로지 return문에 의해서만 생성된다.

만약에 입력값으로 '바보'라는 값이 들어오면 문자열을 출력하지 않고 함수를 즉시 빠져나간다.

>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>> 

이처럼 return으로 함수를 빠져나가는 방법은 실제 프로그래밍에서 자주 사용한다고 합니다.



return True, False

return의 두 기능을 알고 나니까 갑자기 헷갈려서 다른 코드를 살펴보며 공부를 해보았습니다.

참고

뭔가 강의 자료 같아서 내용은 다 못 가져 오겠고 코드만 쏙 빼서 가져오겠습니다.😊

def is_palindrome(word):
    for i in range(len(word)):
        if word[i] != word[len(word) - i - 1]:
            return False
    return True

여기서는 앞과 뒤가 똑같은 단어로 해당 알고리즘이 작용하는 특이한 경우로 예상과 다르게 for문이 모두 반복하고 종료되는 결과를 보여주고 있습니다!

함수 is_palindrome에 word 매개변수를 입력합니다.

그러면 word 길이 만큼 for문을 반복하고 word[i]와 word[len(word) - i - 1]을 비교하여,

  • 문자열이 같지 않으면 False를 return
  • 문자열이 같으면 True를 return

하도록 조건문을 넣어놨습니다.

>>> print(is_palindrome('word'))
False
>>>print(is_palindrome('wow'))
True

단어가 안 겹치는 'word'와 앞뒤가 같은 'wow'를 넣었을 때 두 매개변수 값은 각각 False와 True를 return합니다.



return의 쓰임 예제

갑자기 return을 다시 보게 된 이유는 해당 코드 때문에


# 1	def findNumber(num):
# 2	    global memory, head, current, pre

# 3	    if head == None:                # 단순 연결 리스트 생성
# 4	        return False                # False 반환
# 5	    current = head                  # 헤드를 현재 노드로 지정
# 6	    if current.data == num:         # 현재 노드의 데이터가 넘겨 받은 숫자라면
# 7	        return True                 # 중복되므로 True 반환
# 8	    while current.link != None:     # 노드의 끝까지 넘겨 받은 숫자라면 중복되므로 True를 반환
# 9	  	current = current.link
# 10    	if current.data == num:
# 11        	    return True
# 12	    return False                    # 노드에 없는 숫자라면 False 반환

코드 내용
3~5행head에 아무 값이 없을 경우에 False를 return, 찾는 값이 없기 때문에 함수가 종료된다. 그 뒤 head가 current 노드로 지정된다.
6~7행current 노드의 data가 입력 받은 숫자라면, True를 return하고 함수를 빠져나간다. 해당 값을 찾은 경우이다.
8행노드의 끝까지 값이 안 나올 경우 반복(while)
9~11행current 노드의 data가 넘겨 받은 숫자라면, True를 return하고 함수를 빠져나간다. (위와 동일)
12행아무 값이 없는 경우나 입력 받은 숫자가 중복되지 않는 경우에는 False를 return한다.


정리

다시 정리하면서 내가 무엇이 헷갈렸는지 깨달았다. return은 함수에서 결괏값을 반환 시켜주는 기능을 하고, return이 실행되면 함수를 빠져나온다는 점이다.

대신 위에서 return문만 사용한 점은 함수를 바로 빠져나온다는 것을 설명하는 것 같다!

profile
Tistory로 이사갔어요

0개의 댓글