cs 5. 파이썬 기초 (함수, function, def, return value) :: 맥스웰과 데자와

1. 함수

 

  • 함수(function)는 끊임없이 재사용할 수 있는 코드 기반 요소와 같습니다.
  • 어떤 일을 수행하는 코드 덩어리 즉, 더 큰 프로그램을 제작하는 데 사용할 수 있는 작은 조각을 의미합니다.
  • def 키워드를 이용해 함수를 생성 즉, 정의(define)합니다.
  • 함수의 이름을 이용해 함수를 사용, 즉 호출(call)합니다. 
  • 함수를 사용하면 소스코드 수정, 기능, 재사용 등에 용이합니다.

 

def 함수이름( ) :

    이 함수가 할 일

 

로 실행시킬 수 있습니다.

 

함수 생성과 호출

 

-> def 블록 안의 코드는 주 프로그램의 일부가 아니므로 프로그램이 실행될 때 해당 부분은 건너뛰고 def 블록 안에 있지 않은 첫 번째 줄을 실행하기 시작합니다. 즉, 마지막 줄( myAddress( ) )이 주 프로그램입니다.

 

 

 

2. 함수에 인자(argument) 전달하기

 

  • 인자(argument)란 함수에 전달하는 정보를 의미합니다.
  • 보통 매개변수(parameter)와 바꿔 쓸 수 있습니다.
  • 어떤 값을 받을 것인가와 자료형이 중요합니다!

 

인자가 하나인 함수

 

인자가 두 개 이상인 함수

 

 

 

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

+ Recent posts