UnboundLocalError: local variable 'index' referenced before assignment의 의미
→ (의역) 지역에서 벗어난 오류 : 지역 변수 'index(자신이 사용한 변수의 이름이 적히게 됩니다)'가 (함수 밖에서)이미 언급이 되었다, (함수 안에서) 할당이 되기 전에.
그러니까 index라는 변수를 미리 정하고 들어간 것이 문제가 되었다는 것 같은데, 위의 예시에서 재귀호출을 이용하기 위해서는 index=0이라는 값을 함수 안에서 정할 수는 없는 상황입니다.
해결 방법)
global 명령어를 사용하면 문제를 해결할 수 있다.
하지만, global 명령어를 사용하게 되면 한 번 함수를 사용한 다음에 다시 값을 되돌려 주어야 하는(예를 들어 index를 다시 0으로 설정하는 것.) 과정이 필요한 것 같다.
(global 명령어는 함수 안에서 함수 밖의 변수를 변경하는 방법 중의 하나이다.)
그리고 '점프 투 파이썬'에 따르면 "global 명령어는 프로그래밍을 할 때에 사용하지 않는 것이 좋은 이유는, 함수는 독립적으로 존재하는 것이 좋기 때문이다. 외부 변수에 종속적인 함수는 그다지 좋은 함수가 아니다. 그러므로 가급적 global 명령어를 사용하는 방법은 피하라." 라고 하고 있다.
그렇다면 return을 사용하라고 하는데 어떤 방식으로 사용할 수 있을까? 이 상황에서 적용할 수 있을지는 잘 모르겠다. 그래서 나는 a,b를 생각해보았다. a와 b도 분명 함수 밖에서 정하고 들어갔지만 별 문제가 없다는 것은 함수의 변수를 입력받을 때 있기 때문일 것으로 생각을 했고, 그렇다면 index도 입력받으면 되지 않을까 하고.
그래서 index를 변수에 넣었고 결과는 나름 성공적인 듯 하다.
'✨ 프로그래밍 > 오류(Error)정리' 카테고리의 다른 글
python or을 조심하기 (0) | 2022.03.23 |
---|---|
pip이 최신 버전이 아닐 때 : python -m pip install --upgrade pip (0) | 2021.05.02 |
NameError : name 'b' is not defined (0) | 2020.03.05 |
[Syntax Error] unindent does not match any outer indentation level (0) | 2020.02.03 |