코딩도장 심사문제모음

33.5 연습문제: 호출 횟수를 세는 함수 만들기

codermun 2020. 11. 6. 22:27
728x90
반응형

다음 소스 코드를 완성하여 함수 c를 호출할 때마다 호출 횟수가 출력되게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다.

풀이

1. 먼저 counter 를 클로저로 만들어주기 위해

counter 함수 안의 count 함수를 직접 함수를 호출하지 않고  리턴으로 count 값을 직접 반환

counter 함수에 c를 할당하였고

counter 에서 count를 반환하였기에 c에도 count가 들어가게된다.

2. nonlocal i 를 이용해 바깥쪽 함수의 지역 변수 i 를 i = i +1 로 변경해준다

함수가 실행될때마다 i 값은 누적된다.

3. 누적된 i 값이 즉 호출 횟수이므로 이를 반환하여 counter 에게로 궁극적으로는 c로 반환되도록 해준다.

def counter():
    i = 0
    def count():
        nonlocal i
        i = i + 1
        return i
    return count  ## counter 함수를 클로저로 만들어주는데 핵심인 코드로 생각됨

c = counter()


for i in range(10): # 0 ~ 9
    print(c(), end=' ')

:: 
1 2 3 4 5 6 7 8 9 10

 

728x90
반응형