// 원래 문제
Django 프로젝트 중 발견한 오류이다.
전역 변수를 함수 내에서 수정하려고 했을 때 발생하는 오류이다.
Python과 관련이 있고 Django와는 무관한 것 같다.
오류가 발생한 곳은 line 116이다.
아래 코드를 살펴보면 get 함수에서 rooms를 리턴했지만 그것은 if문 안의 if문에 선언되어 있다.
이것은 자바스크립트의 스코프, 호이스팅과 비슷한 것일까?
오류에 대해서 좀 찾아보았다.
// 예제 1
아래 코드를 실행하면 정상적으로 110이 출력된다.
그러나 아래와 같이 함수 내에서 line 1의 n을 사용하려고 하면 unboundlocalerror가 발생한다.
함수 안에서는 함수 밖에 있는 변수에 값을 할당할 수 없다.
(마찬가지로 함수 밖에서 함수 안에 있는 변수를 사용할 수 없다)
n = n + m이라고 했을 때, 함수 스코프 안에서의 n은 line 1에 있는 n이 아니라 함수 내의 로컬 변수로 간주된다.
따라서, n을 전역변수로 정의해주면 정상적으로 동작한다.
그런데 'global n'과 같이 코드를 쓰는 것이 썩 좋아보이지는 않는다.
==================== 이 내용에 대해서는 추가적인 공부가 더 필요하다 ====================
*참고
https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make
'파이썬 > 에러 코드' 카테고리의 다른 글
[Excel] SUMIF 함수에 대한 재미있는 사실 (0) | 2020.04.03 |
---|---|
[Python] Django Static Files & Deploy (0) | 2020.02.04 |
[Python] 'NoneType' object is not iterable (0) | 2019.12.23 |
[Github] API KEY 노출 문제 (0) | 2019.12.10 |
[Pipenv] django pipenv와 새 컴퓨터 (0) | 2019.12.10 |