파이썬 UnboundLocalError

조회수 3882회

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

counter = 0

def increment():
  counter += 1

increment()

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

    counter += 1
    

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

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

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.