인프런 커뮤니티 질문&답변

뤀쪼님의 프로필 이미지
뤀쪼

작성한 질문수

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

일급함수 - 클로저 심화(3-2)

series = []의 할당과 참조에 대해서

해결된 질문

작성

·

199

0

안녕하세요 강의자님.

 

def closure_ex2():

    cnt = 0

    total = 0

    def averager(v):

        cnt += 1

위에서  아래 함수의 cnt가 위 함수의 cnt를 참조하지 못해서 에러가 발생한다고 해주셨습니다. 그런데

def closure_ex1():

    series = []

    def averager(v):

        series.append(v)

 

이 경우에 아래 함수는 위에서 할당된 series = [] 변수를 참조해서 series.append(v)를 실행할 떄는 왜 에러가 발생하지 않는 것인가요? 리스트는 immutable해서 '자유 변수'로서 기능할 수 있기 때문이라고 이해하면 될까요?

답변 1

1

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

위에 함수에서 += 연산자 사용과 

cnt = cnt + 1

이때 각각 바꿔서 실행해보시면 됩니다.

변수 스코프에서 참조는 가능합니다.

뤀쪼님의 프로필 이미지
뤀쪼
질문자

감사합니다.

뤀쪼님의 프로필 이미지
뤀쪼

작성한 질문수

질문하기