ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 사용자 정의 함수(def)
    Python 2021. 11. 25. 00:23

    *본 게시물은 21-2학기 연세대학교 일반대학원 온라인데이터수집과분석(이상엽 교수님) 수업 내용을 정리한 것입니다.

     

     

      파이썬에는 2가지 함수가 존재합니다. 하나는 기본 제공 함수(built-in function)이고, 다른 하나는 사용자 정의 함수(user-defined function)입니다.

      빌트인 함수는 print(), len()같이 사용자가 별도의 정의를 내리지 않고도 파이썬에서 사용할 수 있는 기본 함수를 말합니다. 사용자 함수는 기본 제공 함수로 반복 task를 수행할 수 없을 때 정의하는 함수라 할 수 있습니다. 

     

     

    사용자 정의 함수는 define으로 생성할 수 있습니다. ①함수 이름, ②파라미터(함수에서 사용될 변수), 실제 ③동작문(body) 그리고 return이라는 ④함수의 반환값으로 구성됩니다. 따라서 사용자 정의 함수는 다음과 같이 생겼음을 알 수 있습니다.

    1
    2
    3
    def function_name(param1, param2...):
        body
        return xxx
    cs

     

    def(ine) 뒤에 함수 이름이 오고, 괄호 안에 파라미터가 오고, body라는 동작문, 그리고 return이라는 반환값이 있음을 확인할 수 있습니다. 실제 사용자 정의함수를 사용하는 방법은 아래와 같습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    # 위의 기본 사용자 함수꼴을 사용해서 만들어본다면...
     
    def subtract(x,y):
        s = x - y
        retun s
     
    #만든 함수를 작동시켜 본다면?
    subtract(105# 값은 5가 반환됩니다.
    cs

    함수를 작동시킬 때는 def에서 파라미터로 지정했던 갯수랑 똑같은 인자가 들어와야 합니다! 만일 동일 갯수의 인자가 들어오지 않으면 "TypeError: 함수이름() missing 1 required positional argument: 'param'"이라는 경고가 표출됩니다.

     

     

    함수의 body에는 보다 복잡한 내용들이 들어갈 수도 있습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # for문을 사용한 사용자 정의 함수
    def add_numbers(x):
        total = 0
        for i in x:
            total = total + i
        return total
     
    # 위의 함수를 숫자로 구성된 리스트에 적용한다면?
    = [1,2,3]
     
    add_numbers(x)
    # 일단 total 0인 상태에서 시작하게 됩니다.
    # x라는 리스트 안에 원소 i가 있을 때 total과 더하게 되므로
    # 일단은 0+1
    # 다음은 total이 1인 상태에서 다음 리스트 원소인 2와 더해져서 3
    # total이 3인 상태에서 다시 for문이 도므로 x안의 3까지 더해집니다
    # 따라서 최종 반환값은 6
    cs

     

     

    숫자 뿐만 아니라 다른 명령어도 가능합니다. 아래 함수는 이상엽 교수님 수업 자료에 있는 예시입니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 문장에 단어가 몇 개 있는지 세는 간단한 함수를 작성한다고 생각합니다.
    # 전처리는 우선 끝에 있는 공백을 없애고, 마침표를 없애는 것부터 시작합니다.
    # 다음으로는 공백을 기준으로 문장을 잘라줍니다. 
    # 잘려진 단어(어절)의 갯수를 len()으로 셉니다
     
    def count_words(text):
        cleaned_text = text.strip().replace('.''')
        cleaned_text = cleaned_text.split()
        return len(cleaned_text)
     
    text = 'Today is a good day.'
    count_words(text) # ['today', 'is', 'a', 'good', 'day']의 길이인 5가 반환됩니다.
    cs

     

     

    여기서부터는 다양한 함수의 예시입니다. 연습 겸 복습 겸 작성해보았습니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ### 숫자가 0보다 큰 지 아닌 지를 리턴하는 함수 ###
    def bigger(a):
        if a > 0:
            print(a, '은/는 0보다 큽니다')
     
    bigger(100# 100 은/는 0보다 큽니다.
     
     
     
    ### 둘을 더해주는 함수 ###
    def summation(a,b):
        summ = a+b
        return summ
     
    summation(100009# 100009
    summation(a=10000, b=9#혹은 이렇게도 함수를 사용할 수 있습니다.
     
     
     
    ### 빼기 함수, 그런데 파라미터에 기본값을 지정한다면? ###
    def subtract(x,y = 0):
        res = x - y
        return res
     
    subtract(7,4# 3 리턴
    # y= 0이 작동되지 않은 이유는 인자에 4를 넣음으로써 새로 y값이 할당되었기 때문입니다.
    # 다만 아래와 같이 인자를 하나만 넣는다면 y = 0이 유지가 됩니다
    # 인자를 하나만 넣어도 가능한 이유는 y에 0이 버티고 있기 때문입니다 ^^ㅋㅋ
    subtract(3# 3 - 0 = 3
    cs

    'Python' 카테고리의 다른 글

    함수2 - 함수의 종류  (0) 2022.03.07
    함수1- 함수 기초  (0) 2022.02.16
    4. 자료형(data types)- 리스트(list)  (0) 2021.09.11
    3. 자료형(data types)- 숫자 numbers  (0) 2021.09.11
    2. Python의 함수(function)  (0) 2021.09.10

    댓글

Designed by Tistory.