해결된 질문
작성
·
258
·
수정됨
1
#1
def clos():
series = []
def averager(v):
series.append(v)
return sum(series) / len(series)
return averager
avg_clos = clos()
print(avg_clos(10))
print(avg_clos(20))
print(avg_clos(30))
#2
def clos():
a = 0
b = 0
def averager(v):
a += v
b += 1
return a / b
return averager
avg_clos = clos()
print(avg_clos(10))
print(avg_clos(20))
print(avg_clos(30))
series든 a,b든 변수에 할당하고 수정하는건 같은데 왜 #2번만 nonlocal을 적용해야 실행이 되는 건지 잘모르겠습니다 . ㅠ.ㅠ
답변 1
0
네 안녕하세요.
#1 예제와는 다르게 #2 예제에서는 일반 변수에
+= -> 할당과 선언이 다시 이루어지므로, nonlocal을 사용해야 합니다.
아래 링크도 한 번 읽어보시고 예제 따라해보세요(번역기능 활용도 좋아요)