ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL. 25 함수의 호출 과정
    TIL 2020. 11. 2. 21:36
    728x90

    ## 함수의 호출 과정 알아보기

    def mul(a, b):
        c = a * b
        return c
     
    def add(a, b):
        c = a + b
        print(c)
        d = mul(a, b)
        print(d)
     
    x = 10
    y = 20
    add(x, y)
    실행 결과
    30
    200

     

    ## 아래 사진은 mul 과 add라는 함수를 정의한 스크립트이다

    ## 해당 이미지는 스크립트를 실행하였을때 (12번) 까지의 결과이며

    ##현재 add(13번)은 호출되지 않은 상황이라 가정한다.

     

    # 스크립트는 줄 1부터 실행되며 해당 스크립트는 줄 12 까지 실행하면서

    전역 프레임(global frame)에 함수 mul, 함수 add, 변수 x , y 가 들어간다

    ## 여기서 mul, add는 생성만 되었을 뿐 호출된 상태는 아니다.


    # 프레임(frame) : 메모리에서 함수와 함수가 속한 변수가 저장되는 독립적인 공간이다.

    # 전역 프레임(global frame) : 파이썬 스크립트 전체에서 접근할 수 있어, 전역 프레임이라 부른다.


    ## add 함수 호출하였을때의 프레임

    # add 함수를 실행하였을때의 줄 7 까지의 진행 상항을 프레임으로 확인해보자.

    ## 입력된 인자를 통해 add 스택 프레임에 c까지 값이 생성된다.


    ## 위 이미지 다음 mul이라는 함수를 호출할때의 프레임이다.

    ## add 안에 mul 이라는 함수가 내장되어있기에 줄 3으로 올라가 mul을 실행한다.

    ## a, b, c 각각 의 값들로 오른쪽과 같은 스택 프레임이 만들어진다.


    ## mul 함수를 끝낸 고 다시 add함수로 돌아올때의 이미지이다.

    # mul 함수를 끝내고 add 함수로 돌아와 mul이라는 함수가 빠진다(스택 프레임 사라짐)

    # 동시에 mul 함수의 결과를 변수 d / 200 이 스택 프레임으로 들어간다.


    ## 줄 9의 print d 를 끝으로 add 함수가 끝나게 되는 이미지

    # 줄 9의 print d 를 끝으로 add 함수가 끝나게 되며, add의 스택프레임도 사라지게 된다.


    ## 함수는 stack (스택)방식으로 호출이 된다.

    ## 함수를 호출하면 스택의 아래쪽 방향으로 함수가 추가되고, 함수가 끝나면 위쪽 방향으로 사라진다.

    ## 프레임은 스택 안에 있어서 각 프레임을 스택 프레임이라 부른다.

     

    728x90

    'TIL' 카테고리의 다른 글

    TIL. 27 재귀 호출(recursive call)  (0) 2020.11.04
    TIL.26 함수 매개변수 및 인수  (0) 2020.11.03
    TIL. 24 함수 만들고 사용하기  (0) 2020.11.01
    TIL.23 N-gram 만들기  (0) 2020.10.31
    TIL. 22 회문 판별하기  (0) 2020.10.30
Designed by Tistory.