코딩도장 심사문제모음
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
반응형