분명 result라는 변수를 add 함수 내에서 만들었는데 이상하게도 add 함수를 호출하는 외부에서는 result라는 변수가 정의되어 있지 않다고 나옵니다. 그 이유는 함수를 정의할 때 사용했던 코드들은 호출하는 영역과 분리되어 별도의 공간을 갖기 때문에 호출 영역에서 result 존재를 파악하지 못하는 것입니다. 이 내용은 뒤에 나올 ‘유효 범위’에서 자세히 다룰 것이므로 지금은 간단히 살펴보겠습니다.
➊ 함수를 정의하는 영역과 호출하는 영역은 서로 다른 영역입니다.
➋ 함수를 정의하는 영역에서 사용한 변수는 호출하는 영역에서 알 수 없습니다.
따라서 호출 영역에서 add(1, 3)으로 함수를 호출했어도 함수 내부의 수행 결과를 전달받지 못해 알 수 없는 상황입니다.
여기서 혹시 코드의 실행 결과는 4로 나오는데 이 결과는 그럼 어떻게 나왔느냐고 물어볼 수도 있을 것 같습니다. 이는 add 함수 안에 print 함수를 이용하여 결과를 단순히 출력한 것뿐이지 함수 호출 영역으로 연산 결과를 전달한 것은 아닙니다. 그러면 함수 실행 결과를 외부로 전달하려면 어떻게 해야 할까요? 바로 return이라는 키워드를 사용하면 됩니다.
def add(param1, param2):
return param1 + param2
add(1, 3)