파이썬 코딩 한줄

파이썬 print와 return의 차이가 헷깔리는 이유는?

soopy 2022. 2. 26. 14:45
728x90

print와 return의 차이가 헷깔리신다면!

 

인터넷에 print와 return 차이를 검색하면 초보자 입장에서

뭐라는지 모를 설명이 참 많은데요. 제가 쉽게 정리해 드릴게요.

저희가 이론적으로 어떤지 궁금한게 아니잖아요??

 

 

print는 결과값을 출력창으로 보고 싶을 때 씁니다.
return은 함수(def)의 결과값을 지정할 때 씁니다.

 

 

제 생각에 print와 return을 헷깔리게 하는 포인트는

아래 두가지 이유가 아닐까 생각합니다.

 

1. print가 코드 연산(계산)의 결과라고 생각하기 때문

2. def 함수의 활용 방법이 다양하기 때문

 

 

 

1. print는 "보여주세요" 라는 뜻이에요.

 

 

"함수에서 print를 쓰면 되지 왜 굳이 return을 쓰나요?"

라는 질문을 하신다면 print 함수가 어떤 식의 계산값을

내어 주는 기능으로 생각하시기 때문인 것 같아요.

아래 예시로 비교해 볼게요.

 

 

# case 1
def twice(x):
	return x * 2
    
print(twice(3) + 2)
>>> 8


# case 2
def twice(x):
	print(x * 2)
    
print(twice(3) + 2)
>>> 6
>>> (Type error) None타입과 int는 더할 수 없음

 

 

함수 내에서 같은 위치에 return과 print을 넣었을 경우

전혀 다른 결과가 나오는 것을 볼 수 있는데요.

case 1처럼 함수에 + 2라는 다른 연산을 이어가기 위해서는

return값을 통해 함수의 결과값을 지정해 줘야해요.

 

반면 case 2의 경우 return값으로 함수의 출력값을

지정하지 않았기 때문에 출력값은 "None(없음)"이

됩니다. 그래서 에러가 발생하죠.

 

case 2의 코드 실행 순서는 아래와 같습니다.

- print 함수를 실행하려니 내부에 계산이 필요해 보입니다.(대기)

- twice 함수가 호출되어 파라미터로 지정된 3을 가지고 twice 함수

  내부로 들어갑니다.

- print(x * 2) 공식에서 아까 받아온 x값 3을 대입하고, 6이라는 값을

  출력창에 보여줍니다. (출력창에 6이 나옴)

- twice 함수의 return으로 지정된 값이 없기 때문에 결과가 없어

  'None' 값을 가지고 twice 함수에서 빠져 나옵니다.

- 'None' + 2는 계산할 수 없기 때문에 에러메시지를 출력창에 띄우고,

  코드 실행은 중단됩니다.

- 초반부터 기다렸던 print 함수는 에러메시지로 인해 결국 실행되지 않습니다.

 

 

 

 

2. 함수의 활용 (return은 꼭 필요한가?)

 

 

# case 1
def twice(x):
	return x * 2
    
print(twice(3) + 2)
>>> 8

 

 

첫번째 케이스는 "값을 두 배로 불리기" 라는

함수가 필요해 만든 케이스이므로 어떤 값을 

넣었을 때 두 배에 해당하는 값을 받아야 하죠.

그래야 다음 연산을 이어나갈 수 있기 때문에

return이 필요합니다.

 

 

 

 

 

# case 2
def data_extract(excel_file):
	"엑셀 파일을 받아서 필요한 데이터를 추출합니다."

 

 

만약 위 예시처럼 엑셀 파일을 넣어서 필요한 자료만

추출해주는 함수를 사용했다면  "데이터 추출하기" 라는

실행이 완료되면 그만이기 때문에 함수의 결과값을

필요로 하지는 않게되죠.

 

일종의 "엑셀에서 데이터 추출하기 실행버튼"과 같은 역할로서

함수를 사용한 경우이므로 return은 불필요 합니다. 

 

 

 

# case 3
def show_graph(dataframe):
	"데이터를 받아서 필요한 데이터만 정리합니다."
	"데이터를 그래프로 보여줍니다."

 

 

위 케이스는 jupyter notebook에서 쓸 법한 함수인데요.

어떤 데이터값을 넣으면 그래프로 출력해주는 함수입니다.

이 경우에도 코드 실행에 중점을 둔 함수이므로

return을 필요로 하지 않습니다.

 

 

 

 

이렇듯 return은 전체 코드 실행 과정에서

어떠한 결과값을 받아낼 필요가 있는지에 따라

사용하시면 됩니다.

 

 

 

 

 

 

 

결론은

 

print는 눈으로 보고싶을 때 쓰고,

return은 def 함수의 결과값이 필요할 때 쓴다.

 

 

728x90
728x90