1. return의 역할[역할1] 함수 호출 부분을 return 뒤에 작성으로 반환시킨다. return 예시 1예를 들면, 왼쪽 이미지 속 3,4번 절차에 해당된다. 4번째 행 'print(f(3))' 로 인해 함수 f(x) 가 호출된다. 호출된 함수 f(x) 는 return 뒤 x + 1 값을 반환시키게 된다. 이때, f(3) 에서 x = 3으로 정의되었기 때문에, x = 3 을 대입한 결과 값 4를 반환하게 된다. 그 결과 최종적으로 print(f(3)) = print(4) 가 되어 4가 출력이 되는 것이다. [역할2] 현재 함수의 실행을 멈추고 함수 호출이 끝나는 지점부터 다시 진행한다. return 의 2번째 기능은 호출된 함수를 끝내는 것이다. def 로 정의된 함수 내에서 return 이 나오면 함수가 종료된다고 이해하면된다. 예를 들어, 4행의 print(f(3)) 으로 인해 1행에 있는 def f(x) 가 호출되었다고 하자. 이때 return 은 호출된 함수 f(3) 에 대해 4를 반환 시킨 뒤에, return의 역할을 완전 수행했으니 함수가 종료되었다고 생각하는 것이다. 결과적으로 3행에 작성된 return 뒤 print("마늘떡볶이") 는 실행되지 않아 결과값으로 출력되지 않으며, 이렇게 return 뒤에 위치하고 있어 수행되지 않는 코드르 Dead Code 라고 지칭한다. 2. print()의 역할print 뒤 () 내에 적힌 값을 출력하는 명령어 만약 print 가 선언되지 않으면, 콘솔 창에 결과 값이 출력되지 않는다. 예를 들어, 아래와 같이 작성된 경우, print에 대한 선언이 없기 때문에 콘솔 창에 값이 출력되지 않을 것이다.
3. return vs print 기능 비교(1) print는 출력 값을 보여주는 기능이며, 출력 값 생성을 위해 함수를 호출하게 된다. (2) return은 정의된 함수에 대한 호출이 있을 때 값을 반환시켜주는 기능이다. (2) 모든 함수는 어떤 값을 return 해야한다. 이때 함수 내에 반환값인 return이 정의되지 않은 경우 None을 결과 값으로 뱉어내게 된다. (아래 4번 내용 참고) 4. 함수 내 return이 정의되지 않은 경우return 은 함수를 종료 시켜주는 역할을 수행한다. 그런데 만약 함수 내에 return 에 대한 정의가 없다면 어떻게 될까? 이런 경우에는 결과값으로 None 을 반환하도록 되어 있다. return이 정의되지 않은 경우위 예시를 보면, 결과 값으로 4와 None 이 출력된 것을 볼 수 있다. - 결과값 4는 def 함수 속 print(x+2) 의 결과로 4가 출력된 것이다. - 결과값 None 은 def 함수가 모두 실행되었지만 return에 대한 정의가 없어 반환한 값이다. 1. 함수
def 함수이름( ) : 이 함수가 할 일 로 실행시킬 수 있습니다. 함수 생성과 호출-> def 블록 안의 코드는 주 프로그램의 일부가 아니므로 프로그램이 실행될 때 해당 부분은 건너뛰고 def 블록 안에 있지 않은 첫 번째 줄을 실행하기 시작합니다. 즉, 마지막 줄( myAddress( ) )이 주 프로그램입니다. 2. 함수에 인자(argument) 전달하기
3. 값을 반환하는 함수 함수에 정보(인자)를 전달할 수 있는 것처럼, 함수에서도 호출자에게 정보를 보낼 수 있습니다. * return value란? 함수로부터 전달되는 값을 결과(result) 또는 반환값(return value)라고 합니다. 값을 반환하는 함수를 만들 때는 함수 안에서 파이썬의 return키워드를 사용합니다. *return의 두 가지 의미 함수의 종료 (아래의 소스코드는 실행시키지 않고 함수를 끝낸다)와 값의 반환 (함수를 끝냄으로써 이 값을 반환한다)가 있습니다. ∨ 위 예제에서는 y 값을 프로그램에서 해당 함수를 호출한 부분으로 보낼 것입니다. 그럼 이 값은 어디로 보내질까요? 반환된 값은 함수를 호출한 코드로 돌아갑니다. nameOfFunction 함수는 7이라는 값을 반환했으며 이 값은 output에 할당되었습니다. 함수를 여러개 만든 후 return 값을 각각 호출할 수 있습니다.여러개의 값을 동시에 반환할 수도 있습니다.# 값 반환하기 예시 값을 반환하는 함수를 만들고 사용하기 (python2.x)-> total처럼 함수 안에 들어 있는 변수뿐 아니라 totalPrice처럼 함수 밖에도 변수가 있습니다. 이 두 변수는 같은 것을 가리키는 두 개의 이름에 불과합니다. *유효 범위(scope) 변수가 사용되는(또는 변수를 사용할 수 있는) 프로그램의 영역을 의미합니다. *지역변수 위 예제에서 price와 total 변수는 함수 내에서만 사용됩니다. 이때 price, total, tax_rate가 calculateTax( ) 함수의 유효 범위 안에 있다고 표현하고, 지역(local)이라고 합니다. 즉, price, total, tax_rate 변수는 calculateTax( ) 함수 내에서 지역 변수(local variable)에 해당합니다. 함수가 실행을 마치면 지역변수는 파괴됩니다. *전역변수 지역변수들과 달리 예제의 my_price와 totalPrice는 함수 밖, 즉 프로그램의 주 영역에 정의되어있습니다. 유효 범위가 더 넓은 변수를 가리켜 전역(global)이라는 용어를 사용합니다. 이 변수들은 프로그램의 어디서도 사용할 수 있기 때문에 이 변수들을 전역 변수(global variable)라고 합니다. 4. 함수 내에서 전역 변수 수정하기(python2.x) -> 함수 내에서 전역 변수를 변경하려고 하면 파이썬이 그 대신 새로운 지역 변수를 만들어 냅니다. 위 예시에서 def 블록 안의 my_price와 주 프로그램의 my_price는 다른 메모리에 존재합니다. 이는 함수에서 우연히 전역 변수를 변경하는 것을 방지하기 위해서입니다. 함수 안에서 전역 변수를 변경하고 싶을 때는 global이라는 키워드를 사용해야 합니다. ※ 주의점 이렇게 코드를 짜면,에러가 뜬다.-> name 'total' is not defined 이유 : 함수가 실행을 마치면 지역변수는 파기되기 때문에 'total'역시 파기되어 데이터가 정의되어 있지 않습니다. ** 올바른 방법 변수선언참고문헌 : 위렌 산데/ 카터 산데, 헬로! 파이썬 프로그래밍, 위키북스, 2015 '프로그래밍 > Python 프로그래밍 기초' 카테고리의 다른 글
|