Python 함수 (Function)

함수 (Function)는 어떤 기능을 수행하기 위한 코드의 단위입니다.

파이썬에서 함수를 만들고 사용하는 방법에 대해 알아봅니다.

순서는 아래와 같습니다.


함수 정의하기

파이썬에서 함수는 def 키워드를 이용해서 정의합니다.

예제

def say_hello():
    print('Hello, world!')

이 함수의 이름은 ‘say_hello’이고,

‘Hello, world!’라는 문자열을 출력하는 단순한 기능을 갖습니다.

함수가 수행할 코드의 블록은 한 칸 들여쓰기로 구분되어야 합니다.


_images/function_01.png


함수 호출하기

정의한 함수를 사용하기 위해서는 아래와 같이 함수의 이름과 괄호 (())를 이용해서 호출합니다.

예제

def say_hello():
    print('Hello, World!')


# 함수 호출하기
say_hello()
Hello, World!


매개변수 사용하기

함수에서 사용할 매개변수 값을 다양한 방식으로 입력받을 수 있습니다.

하나의 매개변수

def say_anything(text):
    print(text)


say_anything('Good morning!')
Good morning!

이 함수는 입력받은 값을 출력합니다.

함수의 정의에서 사용한 text를 매개변수 또는 parameter라고 하고,

함수에 입력한 문자열 ‘Good morning!’을 함수의 인자 또는 argument라고 합니다.

(흔히 문서와 코드에서 관례적으로 arguments를 args로 줄여서 사용합니다.)


두 개의 매개변수

def add_two_values(a, b):
    print(a + b)


add_two_values(3, 4)
7

이 함수는 입력받은 두 숫자의 합 (a + b)을 출력합니다.

함수를 정의할 때 매개변수를 몇 개든지 사용할 수 있지만, 함수를 호출할 때 같은 개수의 인자들을 전달해야 합니다.


매개변수의 기본값

def return_add_result(a, b, c=10):
    print((a + b) * c)

return_add_result(3, 4)
70

함수를 정의할 때 c = 10 과 같이 지정해주면,

세번째 매개변수 c의 기본값이 10으로 설정되어서 입력하지 않아도 됩니다.


매개변수의 기본값2

def return_add_result(a, b, c=10):
    print((a + b) * c)

return_add_result(3, 4, 20)
140

매개변수의 기본값이 지정되어 있더라도, 세번째 인자로 20을 입력하면 새로운 값이 저장됩니다.



임의의 매개변수 (*args)

예제

def add_all(*args):
    print(args)

    s = 0
    for n in args:
        s = s + n

    print(s)


add_all(1, 2, 3)
add_all(1, 2, 3, 4, 5, 6, 7, 8, 9)
(1, 2, 3)
6
(1, 2, 3, 4, 5, 6, 7, 8, 9)
45

함수를 정의하는 시점에 입력 매개변수의 개수가 정해지지 않았다면

*args 와 같이 표시해주면 입력 인자들을 튜플의 형태로 만들어줍니다.

args를 출력하면 (1, 2, 3) 또는 (1, 2, 3, 4, 5, 6, 7, 8, 9)와 같이

모든 인자가 출력됩니다.




키워드 인자 (**kwargs)

예제

def kwargs_func(a, b, **kwargs):
  print(a + b)
  print(kwargs)
  print(type(kwargs))


kwargs_func(1, 2, c=3, d=24, e=5)
3
{'c': 3, 'd': 24, 'e': 5}
<class 'dict'>

**kwargs는 키워드 인자 (Keyword arguments)입니다.

함수에 key=value의 형태로 key와 value를 입력하면 딕셔너리의 형태로 함수에서 사용할 수 있습니다.



함수의 반환값 (Return value)

파이썬 키워드 return을 이용해서 함수의 반환값을 얻을 수 있습니다.

예제1

def return_add_result(a, b):
  s = a + b
  return s


print(return_add_result(3, 4))
7

return_add_result 함수는 두 숫자를 합한 결과를 반환합니다.


아래와 같이 더 간단하게 작성할 수도 있습니다.

예제2

def return_add_result(a, b):
  return a + b


print(return_add_result(3, 4))
7


pass 사용하기

def empty_function():
   pass

함수를 정의할 시점에 수행할 코드가 정해지지 않은 경우 pass 키워드만 입력해줄 수 있습니다.

아직 이 함수는 어떠한 기능도 수행하지 않습니다.



함수를 정의할 때, 입력 매개변수와 반환값이 없어도 됩니다.

또한 입력 매개변수만 있고 반환값이 없어도 되고,

입력 매개변수가 없고 반환값만 있어도 됩니다.

def say_hello():
  print('Hello, world!')


def add_two_values(a, b):
  print(a + b)


def return_true():
  return True


def return_add_results(a, b):
  return a + b


say_hello()
add_two_values(3, 4)
print(return_true())
print(return_add_results(3, 4))
Hello, world!
7
True
7

위의 예제와 같이 상황에 따라 다양한 방식으로 함수를 정의하고 사용할 수 있습니다.



이전글/다음글

이전글 :