파이썬 UnboundLocalError


아래 코드를 실행하면 UnboundLocalError를 받습니다. 어디가 잘못된걸까요?

counter = 0

def increment():
  counter += 1

increment()
  • 2016년 06월 19일에 작성됨

조회수 130


1 답변


좋아요
0
싫어요
채택취소하기

파이썬에는 변수 선언의 개념이 존재하지 않습니다. 따라서 파이썬은 다음의 규칙을 갖고 변수의 사용 범위를 판단합니다 : 만약 함수 안에 변수가 사용된다면, 이는 지역변수로 간주한다. [1] 이에 따라 아래의

counter += 1

counter를 함수 increment()의 지역변수로 취급합니다. 따라서 이 구문을 실행하면 지역변수 counter가 할당되기 전에 해당 변수의 값을 읽으려하는 것이 되고, 이로 인해 UnboundLocalError가 발생하는 것입니다.

만약 counter를 전역변수로써 활용하고 싶으시다면, global 키워드를 사용하시면 됩니다. 또한 파이썬 3.x의 경우, 함수 increment()가 내장함수로 사용되고 counter가 (increment() 함수를 포함하는 함수의) 지역변수라면 nonlocal을 사용하시면 됩니다.

  • 2016년 06월 20일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close