안녕하세요!!
강의에서 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()
전체 코드 입니다.)