-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
클로져를 학습 중에 궁금한게 생겨 질문드립니다
23.04.19 21:00 작성 23.04.19 21:17 수정 조회수 219
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을 적용해야 실행이 되는 건지 잘모르겠습니다 . ㅠ.ㅠ
답변을 작성해보세요.
0
좋은사람
지식공유자2023.04.20
네 안녕하세요.
#1 예제와는 다르게 #2 예제에서는 일반 변수에
+= -> 할당과 선언이 다시 이루어지므로, nonlocal을 사용해야 합니다.
아래 링크도 한 번 읽어보시고 예제 따라해보세요(번역기능 활용도 좋아요)
답변 1