본문 바로가기

웹 프로그래밍/Python

파이썬 함수란 ?

"과일을 믹서기에 넣은 다음에, 믹서 버튼을 눌러주고, 완성된 주스를 컵에 담아줘."

여기서 믹서기를 프로그래밍에서의 함수로 비유하고 싶다.
우리는 이런 주스를 만드는 것 처럼, 함수를 통해서 결국, "어떻게?" 라는 질문보다 "무엇을?"  만들지 고민하면 그만인 것이다.

 

def 함수 정의하기


def는 define 으로, '정의하다'라는 뜻이다. 프로그램에서 자주 사용되는 코드를 따로 만들어 두고 필요할 때마다 불러서 사용하는 기능이다.

1
2
3
def sayGoodBye():
    print('Good Bye!')
 

파이썬은 def 로 함수를 선언하고 뒤에 함수명을 적는다. 함수명을 적고 매개변수(parameter)를 받는 그릇의 역할을 해주는 소괄호 ( ) 를 적는다. 매개변수는 반드시 있어야 되는 필수조건이 아니다. 따라서 매개변수가 없다면 공백으로 처리해주고, 콜론 ( : ) 으로 함수정의를 한다.

만들어진 함수를 호출할 때는 함수명(전달인자) 로 호출하면 된다.

예를들면 입력함수의 input(), input('Hello!'), 출력함수의 print(), print('Total number' + total), 형변환함수 int('12'), str(31), float(15), 랜덤함수 random.randint(1,20) 이 있다.

함수 정의 파트와 함수 호출 파트로 이루어진다.
함수 정의 파트가 함수 호출 파트보다 먼저 작성되어 있어야 한다.
함수 호출 파트(외부)에서 함수 정의 파트(내부)로 값을 전달할 때 전달인자를 사용한다.
함수 정의 파트에서는 값을 받을 때 매개변수로 받는다.
함수 정의 파트에서 함수 호출 파트로 값을 내 보낼 때에는 반환(return)을 사용한다.
전달인자, 매개변수, 반환이 없는 함수도 있다.
함수안에서 사용하는 지역변수와 함수 밖에서 사용하는 전역변수가 있다.

1
2
3
4
5
6
7
8
def add():
    global number
    number = number + 3
    print(number)
 
number = 5
add()
print(number)

2 라인에서 전역변수를 함수 안에서 수정또는 선언하고자 할 때에는 global 키워드를 사용한다.

 

1
2
3
4
number = 5
def add():
    print(number)
add()

3 라인의 함수안에서 전역변수 값을 변경하는 것 없이, 단순히 전역변수의 값을 참조만 하는 경우에는 함수 내부에서 global 로 선언하지 않아도 함수에 정의된 지역변수가 없다면 전역변수를 찾아 참조한다.

 

함수의 장점


코드의 간결성, 재사용성, 모듈화, 용이성이 있다.

  • 코드가 중복되지 않아 간결해진다.
  • 한 번 작성해둔 코드를 여러번 사용하기 때문에 코드를 재사용할 수 있다 (매크로 같은 느낌).
  • 기능별로 함수를 작성하므로 프로그램 모듈화가 증대된다 (어떤 기능을 모아두는 것).
  • 프로그램 기능을 함수로 나누어 묶기 때문에 코드 수정이 쉽다 (유지보수).