해결된 질문
작성
·
48
0
예전부터 리턴에 대해 모호하게 이해하고 있어서 질문드립니다.
# 함수 정의 (리턴 값)
def plus(x, y):
result = x+y
return result
# 함수 호출
a = plus(2,3)
print(a)
이러면 값이 5가 나오는데
# 함수 정의 (리턴 값)
def plus(x, y):
result = x+y
# 함수 호출
a = plus(2,3)
print(a)
이러면 값이 NONE이 나오는 이유가 리턴이 없어서 왜 a = 2+3으로 받아들이지 못하는 건지 궁금합니다.
# 함수 정의 (리턴 값)
def plus(x, y):
result = x+y
result
# 함수 호출
a = plus(2,3)
print(a)
이 값 또한 NONE으로 출력되는데
두번째 함수 호출 코드에서 plus(2,3) 이니까 plus(2,3) = result 이고 result 는 5이니깐 a = 5이므로 print (a) 는 5가 되어야 하는게 아닌가요? return이 없으면 함수에 무엇을 대입하든 변수에 값이 저장되지 않는 느낌이네요?
답변 2
0
1
# 함수 정의 (리턴 값)
def plus(x, y):
result = x+y
# 함수 호출
a = plus(2,3)
print(a)
이러면 값이 NONE이 나오는 이유가 리턴이 없어서 왜 a = 2+3으로 받아들이지 못하는 건지 궁금합니다.
함수는 입력과 출력이 있어요.
입력은 소괄호 안에 넣는 값이고, 출력은 return
으로 돌려주는 값이에요.
그런데 지금 작성한 함수에는 return
이 없어요.
그래서 출력 결과가 없고, 대신 **None
**이 나타난 거예요.
# 함수 정의 (리턴 값)
def plus(x, y):
result = x+y
result
# 함수 호출
a = plus(2,3)
print(a)
이 값 또한 NONE으로 출력되는데
두번째 함수 호출 코드에서 plus(2,3) 이니까 plus(2,3) = result 이고 result 는 5이니깐 a = 5이므로 print (a) 는 5가 되어야 하는게 아닌가요? return이 없으면 함수에 무엇을 대입하든 변수에 값이 저장되지 않는 느낌이네요?
여기서 result
는 분명 5
가 되지만,
함수 밖으로 "내보내는 코드" (return result
)가 없기 때문에,a
에는 아무 값도 저장되지 않아요. 그래서 None
이 출력됩니다.
💬 그리고 변수에 대해 조금 더
함수 안에서 만든 result
는 지역 변수라서, 함수 바깥에서는 쓸 수 없어요.
함수 바깥에서 쓰려면, return
을 써서 "밖으로 전달"해줘야 해요.
0
안녕하세요, 인프런 AI 인턴입니다. 김민성님.
리턴 값과 함수 호출에 대한 궁금증을 가지셨군요! 설명드리겠습니다.
함수에서 return
은 함수가 호출될 때 그 결과값을 함수 외부로 전달하는 역할을 합니다.
리턴을 사용하는 경우:
def plus(x, y):
result = x + y
return result
이 함수는 x + y
의 결과를 반환 (return
) 하므로 함수 호출 시 그 값을 변수에 할당할 수 있습니다. 따라서 a = plus(2, 3)
는 a = 5
로 저장됩니다.
리턴이 없는 경우:
def plus(x, y):
result = x + y
이 함수는 x + y
의 값을 계산만 하고, 외부로 반환하지 않습니다. 따라서 결과값을 변수에 할당할 수 없으며, 함수는 자동으로 None
을 반환합니다. 그래서 a = plus(2, 3)
는 a = None
이 됩니다.
단순한 결과 계산 후 로컬 변수 사용:
def plus(x, y):
result = x + y
result
이 경우도 result
를 반환하지 않으므로, 함수 외부에서는 값이 전달되지 않습니다. 따라서 a = plus(2, 3)
는 여전히 None
이 됩니다.
함수 내에서 계산된 값이 반환되어야 그 값을 외부에서 사용할 수 있습니다. return
문이 없다면, 계산 결과를 외부로 전달하지 못하고 결과적으로 None
이 할당되는 것이죠.
이와 관련한 유사한 질문이나 상황을 탐색하실 수 있는 링크를 드리겠습니다:
- 함수 반환값 처리의 중요성
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
빠른 답변 감사합니다! 한번에 이해가 되긴 했습니다!
return 코드가 print코드와 비슷한게 있어서 헷갈렸나 봅니다.
이래도 값이 5가 나오길래, return코드를 사용할때 print코드와 사용할때를 헷갈릴때가 있었고, 따라서 혼동이 있었던것 같습니다.
근데 함수안에서 사용한 print도 밖으로 전달이 되는데, 이 두개를 구분짓는 가장 큰 차이점이 뭐인지 알 수 있을까요??