코드의 반복을 줄이거나 어떠한 용도를 위해 특정 코드들을 모아둔 것.
한 번 작성해두면 해당 코드가 필요할 때 함수를 호출해서 쉽게 재사용 할 수 있고, 용도에 따라 분리가 가능해 가독성이 좋다.
>>> def twice(a): # twice 함수 생성
... return a*2
...
>>> print(twice(3)) # twice 함수 호출하여 3입력
6
'아메리카노'를 주문하면 분쇄된 원두를 에스프레소 기계에 넣고 추출한 후 해당 원액을 물에 타서 준다. 우리는 해당 설명없이 '아메리카노 한 잔 주세요.'라고 주문을 하면 원하는 결과값을 얻을 수 있다. 따라서, '아메리카노'를 하나의 함수로 볼 수 있다.
다음은 일반적인 함수의 형태이다.
def 예약어를 사용해 함수를 정의하고, 수행할 문장을 작성한다.
return은 결과값을 반환하는 예약어이다. 결과값이 필요없다면 사용하지 않아도 무방하며 결과값 없이 함수의 종료 목적으로만 사용 할 수도 있다.
✨ 함수의 예시를 살펴보자.
>>> def add(a,b):
... result = a+b
... return result
...
>>> print(add(1,2))
3
위의 예시처럼 함수를 호출할 때, add('1,2')와 같은 형태로 호출했다.
이 때 괄호 속에 입력한 '데이터'가 함수에 전달하는 데이터이다.
함수에 전달하는 데이터 자체는 '인자(argument)'라고 부르며, 전달된 데이터를 함수 속에서 부를 이름(변수)을 '매개변수(parameter)'라고 부른다.
※ 함수를 호출할 때, 인자와 매개변수의 개수 및 순서가 같아야 한다.
✨ 여러 개의 인자를 전달받는 함수를 살펴보자.
>>> def print_order(drink, cake): # 콤마(,)로 구분해 매개변수 여러 개 정의
... print('음료:', drink, '/', '케익:', cake)
...
>>> print_order('아메리카노', '치즈케익') # 매개변수의 개수 및 순서에 주의한다.
음료: 아메리카노 / 케익: 치즈케익
return은 함수의 결과값을 반환해주는 예약어이다. return을 실행하면 함수의 실행이 종료되고, 지정한 값이 함수가 호출된 지점으로 반환된다.
print: 데이터를 화면에 출력 (for 사람에게 보여주기 위해서)
return: 데이터를 함수 바깥으로 출력 (for 프로그램 진행을 위해 계산 결과를 반환)
✨ return 예시를 살펴보자
>>> def add(a, b):
... result = a + b
... return result # 계산한 값 반환
...
>>> sol = add(3,4) # 함수 호출하고 반환값 저장
>>> print(sol)
7
>>> def say():
... return 'hi'
...
>>> a = say() # 입력값은 없지만 결과값으로 'hi'를 반환해 a에 대입해준다.
>>> print(a)
hi
결과값을 받을 변수 = 함수이름()
>>> def add(a,b):
... print(a+b)
...
>>> add(3,4)
7
함수이름(입력인수1, 입력인수2, ...)
💡 7을 출력해주었는데 왜 결과값이 없다는 것일까? 확인해보자.
>>> a = add(3,4)
>>> print(a)
None
변수에 저장하자 None이 출력됐다.
print() 함수는 단지 출력해서 보여줄 뿐이다. 결과값은 오직 return으로만 받을 수 있다.
>>> def say():
... print('hi')
...
>>> say()
hi
함수이름()