def add(a,b):
return a+b
위 코드에서 return은 함수의 결괏값을 돌려주는 명령어입니다.
함수는 입력값을 받아 어떤 처리를 한 후에 결괏값을 돌려주는 형태이기 때문인데요.
그래서 일반적인 함수의 형식은
def 함수 이름(매개변수):
수행할 문장
...
return 결괏값
을 갖습니다.
함수에서는 결괏값을 오직 return 명령어로만 돌려받을 수 있습니다.
만약 결괏값이 없는 경우라면 반환값으로 None을 출력할 것입니다.
def say_nick(nick):
if nick == "바보":
return
print("나의 별명은 %s입니다." % nick)
위 함수는 '별명'을 입력으로 전달받아 출력하는 함수입니다.
이 함수 역시 반환 값(결괏값)은 없습니다.
문자열을 출력하는 것과 반환 값이 있다는 것은 전혀 다른 개념입니다. 함수의 반환 값은 오로지 return문에 의해서만 생성된다.
만약에 입력값으로 '바보'라는 값이 들어오면 문자열을 출력하지 않고 함수를 즉시 빠져나간다.
>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>>
이처럼 return으로 함수를 빠져나가는 방법은 실제 프로그래밍에서 자주 사용한다고 합니다.
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]을 비교하여,
하도록 조건문을 넣어놨습니다.
>>> print(is_palindrome('word'))
False
>>>print(is_palindrome('wow'))
True
단어가 안 겹치는 'word'와 앞뒤가 같은 'wow'를 넣었을 때 두 매개변수 값은 각각 False와 True를 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문만 사용한 점은 함수를 바로 빠져나온다는 것을 설명하는 것 같다!