ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL. 24 함수 만들고 사용하기
    TIL 2020. 11. 1. 17:16
    728x90

    ## 함수 만들기

    # 김왼손의 왼손코딩 강의에서는 이렇게 뒷부분에 등장하지 않았던 것 같으나 많고 많은 중요한 내용 중 하나가 등장했다고 생각하니

    # 기본을 기본처럼 익히자.


    ## hello 함수 만들고 출력하기

    ## 함수는 def에 함수 이름을 지정하고 ( )(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성한다(함수의 이름을 짓는 방법은 변수와 같다).

    # 이때 코드는 반드시 들여쓰기를 한다.

    def hello():
        print('helloo world')
        # 빈줄 1줄 사용

    print 코드 아래의 빈줄은 print 함수를 실행 후 , 하면서 빈줄이 있음으로써 hello() 함수가 종료되는 것이다.

    def hello():
        print('helloo world')
    hello() # 빈줄 없이 바로 함수 호출

    # vs 코드 작성시 빈줄을 사용하지 않고 바로 함수를 호출하여도 동작은 하지만 빈줄에 대해서 알고 있을 필요가 있다.

    # hello() 라는 함수는 vs 코드에서 hello() 만 입력해도 안의 print가 있으므로 별도 print는 필요없다

    # 또한 뒤의 () 를 생략해서도 안된다.


    ## 이렇게 함수를 사용할때는 함수를 호출(call)한다고 부른다

    hello() # 함수 호출 (call)

    # 앞은 숫자로 시작 x 공백 시작 x 는 변수를 할당할때와 동일하다.


    ## 함수의 실행 순서.

    1. 파이썬 스크립트 최초 실행

    2. hello 함수 호출

    3. hello 함수 실행

    4. print 함수 실행 및 'Hello, world!' 출력

    5. hello 함수 종료 # 빈줄

    6. 파이썬 스크립트 종료


    ## 함수의 작성과 호출순서

    ## 당연하지만 함수를 만들어 주기 전에 함수를 호출 할수 없다.


    ## 빈 함수 만들기

    def okk():
        pass

     

    ## 내용이 없는 빈 함수를 만들 수 있으며, pass 를 이용해 아무일을 하지 않아도 함수의 틀을 유지해야할 때 사용한다.


    ## 덧셈 함수 만들기

    def 함수이름(매개변수1, 매개변수2):
        코드
    def add(a, b):
        print(a + b)
    
    

    # 함수에 값을 넣어서 실제로 동작가능하도록 정의해주자

    # 함수에서 값을 받아오려면 (사용자 입력에 따라 값이 달라짐로 받아온다는 표현을 쓴다)

    # () 괄호 안에 변수 이름을 넣어주면 된다.

    # 이때 넣어주는 변수를 "매개변수"(parameter)라고 부른다 // a == 매개변수 1, b == 매개변수2

     

    add(100, 200)

    ## add 함수를 100, 200 을 넣어 호출해보자.

    # 여기서 함수를 호출 할 때 넣는 값(100, 200)을 "인수"(argumunt) 라고 부른다


    ## 종합

    # 함수 정의 시 값 a, b 는 매개변수

    # 함수 호출 시 값 100, 200 은 인수 이다.


    ## 함수 독스트링 사용하기

    ## 독스트링 이란

    ## 파이썬에서는 함수의 :(콜론) 바로 다음 줄에 """ """(큰따옴표 세 개)로 문자열을 입력하면 함수에 대한 설명을 넣을 수 있다.

    # 이런 방식의 문자열을 독스트링(문서화 문자열, documentation strings, docstrings)이라 한다.

    ## 단, 독스트링의 윗줄에 다른 코드가 오면 안 된다.

    def add (a, b):
    
    """
    
    이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다
    
    """
    
    return a + b
    
    
    
    x = add(10, 20)
    
    
    
    print(x) # return 반환 하는 함수로 print 사용해줌 또는 반환 값 변수에 할당
    ::
    30
    ## 독스트링 출력 x
    
    

    ##(add.__doc__)add 함수의 독스트링 출력해줌

    print(add.__doc__)
    
    ::
    
     이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다
    

     



    ## help(객체) 를 이용해 확인 가능하다.

    help(add)
    ::
    Help on function add in module __main__:
    add(a, b)
    이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다

    ## 함수 결과 반환 하기

    ## 함수 안에 print가 아닌 return을 이용하면 값을 함수 바깥으로 반환한다..(return에 값을 지정하지 않으면 None을 반환).

    def add (a, b):
        return a + b
    
    x = add(10, 20)
    print(x)
    ::
    30

     

    # 이처럼 return을 사용하면 값을 바깥으로 반환 할 수 있고, 함수에서 나온 값을 변수에 저장할 수 있다.

    # 즉, return으로 반환하는 값은 반환값이라고 하며 함수를 호출해준 바깥에 결과를 알려주기 위해 사용합니다.


    # 반환값은 변수에 저장하지 않고 바로 다른 함수에 넣을 수도 있다. 다음은 print에서 바로 add를 호출하여 결과를 출력할 수 있다.

    print(add(20, 30))
    ::
    30


    ## 매개변수가 없고 반환값만 있는 함수

    def opp():
        return 1
        
    print(opp())
    ::
    1

    ## return 으로 함수 중간에 빠져나오기

    def not_ten(a):
        if a == 10:
            return
        print(a, '입니다')
    
    not_ten(5)
    ::
    5 입니다 출력
    
    not_ten(10)
    
    # 10이면 리턴으로 함수 중간에 빠져나와 return 아래 print를 실행하지 않아 아무것도 출력되지 않는다.
    
    

    ## 이처럼 return은 함수 중간에 빠져나올때 자주 사용하며 if 문과 조합해 특정조건에 빠져나오도록 만들 수 있다.

     


    ## 여러값 반환하기

    def 함수이름(매개변수):
        return 반환값1, 반환값2
    def aff(a, b):
        return a+b, a-b
    
    x, y = aff(10, 20)
    
    print(x)
    :: 
    30
    print(y)
    ::
    -10
    print(x, y)
    :: 30, -10

    ## 함수에서 정의한 바와 같이 30, -10 값이 반환되고

    ## 변수 2개를 사용해줌으로써 x <- 30, y <- -10을 할당하는 것을 볼 수 있다.

    ## 이는 언패킹을 이용한 것으로 아래 코드도 함께 참고하자

    z = aff(10, 20)
    
    print(z)
    ::
    (30, -10)

    ## 이처럼 (30, -10) 한개의 튜플로 반환되는 것을 볼 수 있다.

    ## 즉 튜플이 변수 여러개에 할당되는 특성(언패킹)을 이용한 것이다.

    i, j = (30, -10)
    
    print(i)
    ::
    30
    print(j)
    ::
    -10

    ## 언패킹을 이용해 각각 i, j에 값을 할당할 수 있다.


    ## 값 여러 개를 직접 반환하기

    # 함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 return에 튜플을 지정해주면 된다.

    def one_two():
        return (1, 2)
    # 사실 파이썬에서는 괄호 없이 값을 콤마로 구분하면 튜플이 되는데, 즉, 튜플 1, 2는 튜플 (1, 2)와 같습니다.
    >>> 1, 2
    (1, 2)

     

    ## 따라서 return 1, 2는 return (1, 2)와 의미가 같습니다.

    def one_two():
        return 1, 2 # return (1, 2)와 같음

    # 물론 return에서 리스트를 직접 반환해도 됩니다. 이때도 반환값을 변수 여러 개에 저장할 수 있습니다.

    def one_two():
        return [1, 2]
    
    x, y = one_two()
    
    print(x, y) # x <- 1, y <-2 unpacking
    :: 1 2

     

    728x90

    'TIL' 카테고리의 다른 글

    TIL.26 함수 매개변수 및 인수  (0) 2020.11.03
    TIL. 25 함수의 호출 과정  (0) 2020.11.02
    TIL.23 N-gram 만들기  (0) 2020.10.31
    TIL. 22 회문 판별하기  (0) 2020.10.30
    TIL. 21 파일 사용하기  (0) 2020.10.29
Designed by Tistory.