티스토리 뷰

Backend-dev/python

파이썬의 함수

RunningWater 2018. 4. 6. 14:39

함수를 왜 사용할까요?

반복해서 사용하는 코드가 있을 때 한번만 정의해두고 필요할 때 간단한 명령으로 불러 사용할 수 있으면 아주 가시적으로 좋고, 사용성도 증가할 것입니다. 함수를 사용하는 이유는 이처럼 가시성과 사용성이 증가하기 때문입니다.

함수의 정의와 실행

say_hello라는 함수를 정의해보겠습니다.

def say_hello(name):
    return 'hello world {}'.format(name)

say_hello("lemon")


함수를 정의할 때는 def 함수명(): 으로 시작하고 밑부분에는 실행할 구문들과 리턴값 등을 적어주면 됩니다. 그리고 함수를 실행할 때는 함수명()을 통해서 정의한 함수를 실행할 수 있습니다.

파라미터(매개변수)와 리턴

함수와 관련된 헷갈릴 수 있는 용어들을 몇 개 알아보도록 하겠습니다. 위의 say_hello함수를 정의할 때 괄호 안에 name이라고 적은 것을 파라미터(매개변수)라고 합니다. 값을 받아서 함수내에서 사용하는 변수입니다. 그리고 함수를 실행할 때 name의 값으로 "lemon"이라는 값을 사용했습니다. 이렇게 실제 사용한 값을 인수라고 합니다. 매개변수와 인수를 딱히 구분해서 사용하지는 않습니다만 용어가 헷갈릴수도 있어서 정리해봤습니다.

함수 도식

함수를 그림으로 나타내면 저런 모양이 됩니다. 하나의 구멍으로 값이 들어오고, 하나의 구멍으로 값이 나옵니다. output이라고 적힌 부분이 return입니다. 우리가 정의한 함수에서는 'hello world name'이라는 문자열이 리턴되었었죠? 함수에서 리턴 구문을 만나면 리턴에 있는 값을 반환하고 함수가 종료됩니다. 그리고 매개변수가 없을수도 있지만 함수는 꼭 무언가를 리턴해야합니다. 따로 리턴값을 적지 않으면 None이 리턴됩니다.


def say_hello(name):
    print('hello world {}'.format(name))
    #똑같이 실행되는 것 같지만 리턴값은 None

say_hello("lemon")

def two_return():
    return 'lemon'
    return 'candy'

two_return()


two_return이라는 함수는 두개의 리턴구문을 가졌습니다. 함수는 리턴 구문을 만나면 리턴에 있는 값을 반환하고 함수가 종료된다고 했습니다. 즉 해당 함수는 첫번째 리턴구문을 만나서 "lemon"이라는 문자열을 반환하고 종료됩니다.


def two_value():
    return 'lemon','candy'

two_value()


리턴 구문이 두개가 아니라 리턴은 하나지만 값을 두개 반환하면 어떻게 될까요? 리턴해야할 값들이 튜플안에 담겨서 반환됩니다. 즉 저 함수는 실행하면 ('lemon', 'candy')를 반환하는 것입니다.

매개변수가 여러개일 경우 함수정의

함수는 리턴구문이 있으나 없으나 에러를 일으키지 않습니다. 하지만 인수를 정의했지만 값을 넣지 않으면 에러를 일으킵니다. 그렇다면 정확히 넣을 매개변수의 숫자를 모른다면 어떻게 해야할까요? 이때에는 매개변수에 *을 붙이면 됩니다.

def print_value(*values):
    for value in values:
        print(value)

print_value('환', '영', '합', '니', '다')


매개변수에 *을 붙여서 정의하면 인수 전체를 튜플로 묶어서 전달합니다. 그리고 함수내부에서 반복문 등을 통하여 값을 활용할 수 있게 됩니다.

매개변수에 기본값 주기

매개변수와 관련해서 하나 더 알고 있어야 하는 것은 바로 기본값을 줄 수 있다는 것입니다. 정의할 땐 매개변수가 있었지만 실행할 땐 매개변수를 입력하지 않았다면 에러가 난다고 했죠? 하지만 기본값을 지정하면 에러가 나지않고 기본값이 출력됩니다.

def init_def(name='lemon'):
    print('hello world {}'.format(name))

init_def() #인수를 넣지 않아도 에러가 나지 않습니다.


기본값을 준 매개변수가 다른 기본값이 없는 매개변수와 함께 정의되어있다면 기본값을 가진 것들이 맨 뒤로 가야합니다.



프로그래밍에서 아주 중요한 함수에 대해서 배워보았습니다.



공감은 제작자에게 큰 힘이 됩니다.


'Backend-dev > python' 카테고리의 다른 글

파이썬의 클래스(class)  (0) 2018.04.09
파이썬의 유효범위(scope)  (0) 2018.04.07
파이썬의 반복문(for, while)  (0) 2018.04.03
파이썬의 조건문(if)  (1) 2018.04.02
파이썬의 자료형 set 알아보기  (0) 2018.03.30
댓글