retuen문의 역할은 값을 돌려주는 것과 함수를 즉시 종료하는 것이다.
def square(x):
return x*x
print(square(3))
Out
9
위에서 square 함수를 호출하고 파라미터로 3을 넘겨주었다.
square함수에서는 return 3*3을 해서 9를 리턴해준다.
그러면 함수가 이 9를 돌려줘서 함수 호출 부분을 대체한다.
def square(x):
print("함수 시작")
return x*x
print("함수 종료")
print(square(3))
print("Hello")
Out
함수 시작
9
Hello
square함수를 호출하고 파라미커로 3을 넘겨줬으니 x에는 3이 지정된다.
그리고 먼저 '함수 시작'이라고 출력된다. 그 다음 리턴 3*3이니까 9를 리턴한다.
하여 함수 호출 부분이 9로 대체된다. 하지만 return문은 값을 돌려주는 것뿐만 아니라 함수를 종료시키기까지 하므로 print("함수 종료")라는 코드는 절대 실행되지 않는다.
이후 print("Hello")라는 코드가 실행되어 코드 결과는 위처럼 나온다.
이와 같이 실행되지 않고 아무런 의미가 없는 코드를 Dead Code라고 한다.
예시 코드 )
In
def print_square(x):
print(x*x)
def get_square(x):
return x*x
print_square(3)
get_square(3)
Out
9
위에서 print_square 함수에 파라미터로 정수 3을 넘겨줬으니 x에 3이 지정된다. 함수 내에서 프린트 33이기 때문에 결과로 9가 출력되고 함수는 끝난다.
get_square 함수에도 파라미터로 정수 3이 넘어가고 x에 3이 지정된다. 그러면 함수에서는 리턴 33을 하고 결과인 9가 함수 호출 부분을 대체할 것이다.
하지만 함수 호출 부분이 9로 대체되기만 하고 뭘 출력하라는 명령문이 없으므로 아무것도 출력되지 않은채로 프로그램이 끝난다.
get_square(3)의 값을 출력하고 싶다면 get_square(3)이 아닌 print(get_square(3))을 코드로 작성해야한다.
또 다른 예시 )
In
def print_square(x):
print(x*x)
print(print_square(3))
Out
9
None
위 코드에서는 print문 안에 있는 부분을 먼저 계산한다. 그러면 print_square 함수가 호출되고 파라미터로 3이 넘어가서 프린트 3*3이 실행되니 결과에 9가 출력된다. 그리고 함수가 끝나는데 print_square 함수에는 리턴문이 따로 없다.
파이썬에서는 리턴문이 따로 없으면 리턴값이 없다는 의미에서 None이라는 값이 리턴된다. 하여 함수 호출 부분이 None이라는 값으로 대체된다.
print(print_square(3))이라는 코드는 결국 print(None)이 되어서 결과에 None이 출력되는 것이다.