파이썬 UnboundLocalError
조회수 4619회
아래 코드를 실행하면 UnboundLocalError
를 받습니다. 어디가 잘못된걸까요?
counter = 0
def increment():
counter += 1
increment()
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
파이썬에는 변수 선언의 개념이 존재하지 않습니다. 따라서 파이썬은 다음의 규칙을 갖고 변수의 사용 범위를 판단합니다 : 만약 함수 안에 변수가 사용된다면, 이는 지역변수로 간주한다. [1] 이에 따라 아래의
counter += 1
은
counter
를 함수increment()
의 지역변수로 취급합니다. 따라서 이 구문을 실행하면 지역변수counter
가 할당되기 전에 해당 변수의 값을 읽으려하는 것이 되고, 이로 인해UnboundLocalError
가 발생하는 것입니다.만약
counter
를 전역변수로써 활용하고 싶으시다면,global
키워드를 사용하시면 됩니다. 또한 파이썬 3.x의 경우, 함수increment()
가 내장함수로 사용되고counter
가 (increment()
함수를 포함하는 함수의) 지역변수라면nonlocal
을 사용하시면 됩니다.
댓글 입력