• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

클로저 free variable 질문

22.01.13 17:26 작성 조회수 76

0

안녕하세요!!
 
강의에서 free variable 사용하실 때,
 
하나는
 
series =[ ]
 
다른 하나는
 
cnt = 0
total =0
 
를 사용하셨는데요, 둘이 무슨 차이가 있길래 series는 global 처리를 안해도 작동을 잘 하고
 
cnt, total은 global처리를 해야지만 작동을 하는 건가요?
 
(
def closure_ex1():
    # Free variable
    series = []
    # 클로저 영역
    def averager(v):
        # series = [] # 주석 해제 후 확인
        series.append(v)
        print('inner >>> {} / {}'.format(series, len(series)))
        return sum(series) / len(series)
   
    return averager
 
 

# 잘못된 클로저 사용
def closure_ex2():
    # Free variable
    cnt = 0
    total = 0

    def averager(v):
        cnt += 1 # cnt = cnt + 1
        total += v
        return total / cnt
   
    return averager

avg_closure2 = closure_ex2()
 
전체 코드 입니다.)

답변 1

답변을 작성해보세요.

0

변수의 스코프(생성, 소멸주기)영역으로 예제처럼 작성해야 작동합니다.~