[Python] 함수란? (함수생성, 함수호출, 매개변수, 인자)

토끼는 개발개발·2021년 9월 13일
1

Python

목록 보기
1/11
post-thumbnail

✏️ 1. 파이썬의 함수(function)란?


코드의 반복을 줄이거나 어떠한 용도를 위해 특정 코드들을 모아둔 것.
한 번 작성해두면 해당 코드가 필요할 때 함수를 호출해서 쉽게 재사용 할 수 있고, 용도에 따라 분리가 가능해 가독성이 좋다.


예를 들어, 입력값의 2배를 계산해야 경우가 반복적으로 발생한다면 '입력값의 2배를 결과값으로 돌려준다.'라는 식의 함수를 만들어 사용하는 것이 편리하다.
>>> def twice(a):      # twice 함수 생성
...     return a*2
...
>>> print(twice(3))    # twice 함수 호출하여 3입력
6

'아메리카노'를 주문하면 분쇄된 원두를 에스프레소 기계에 넣고 추출한 후 해당 원액을 물에 타서 준다. 우리는 해당 설명없이 '아메리카노 한 잔 주세요.'라고 주문을 하면 원하는 결과값을 얻을 수 있다. 따라서, '아메리카노'를 하나의 함수로 볼 수 있다.



✏️ 2. 함수 정의하기


다음은 일반적인 함수의 형태이다.

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은 함수의 결과값을 반환해주는 예약어이다. return을 실행하면 함수의 실행이 종료되고, 지정한 값이 함수가 호출된 지점으로 반환된다.

print: 데이터를 화면에 출력 (for 사람에게 보여주기 위해서)
return: 데이터를 함수 바깥으로 출력 (for 프로그램 진행을 위해 계산 결과를 반환)


✨ return 예시를 살펴보자

>>> def add(a, b): 
...     result = a + b 
...     return result       # 계산한 값 반환
...    
>>> sol = add(3,4)          # 함수 호출하고 반환값 저장
>>> print(sol)
7


📌 2.1 입력값이 없는 함수

>>> def say():
...     return 'hi'
...
>>> a = say()   # 입력값은 없지만 결과값으로 'hi'를 반환해 a에 대입해준다.
>>> print(a)
hi

결과값을 받을 변수 = 함수이름()


📌 2.2 결과값이 없는 함수

>>> def add(a,b):
...     print(a+b)
...
>>> add(3,4)
7

함수이름(입력인수1, 입력인수2, ...)

💡 7을 출력해주었는데 왜 결과값이 없다는 것일까? 확인해보자.

>>> a = add(3,4)
>>> print(a)
None

변수에 저장하자 None이 출력됐다.
print() 함수는 단지 출력해서 보여줄 뿐이다. 결과값은 오직 return으로만 받을 수 있다.



📌 2.3 입력값과 결과값 모두 없는 함수

>>> def say():
...     print('hi')
...
>>> say()
hi

함수이름()

profile
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글