티스토리 뷰

파이썬으로 프로그래밍을 하다가 가끔씩 다음과 같은 에러를 만난다.

UnboundLocalError: local variable 'len' referenced before assignment

len이라는 이름의 변수를 할당하기전에 사용했다는 에러 메시지다. 이 에러를 발생시킨 코드는 다음과 같다.

def func1(s):
    cs = set(s)
    for i in range(len(cs)):
        if False:
            len = 0
        print(i)

str = "ABCDDD"
func1(str)

문제의 원인은 함수 내부에서 len이라는 변수에 값을 할당해서 사용했기 때문이다. C 언어나 Java의 경우 변수 이름으로 Reserved Word를 사용할 경우 변수 할당이 안되고 컴파일 에러가 발생한다. 하지만 파이썬은 Reserved Word도 변수 이름으로 사용할 수 있다.

 

신기한 점은 if False: 구문으로 실행되지 않게 처리한 부분에서 len 이라는 이름을 사용했음에도 문제가 발생했다는 점이다.

 

이런 에러를 만났을 경우 len이라는 이름 대신 length 같은 풀 네임을 사용해서 오류를 예방하도록 하자.

댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
1,515
Today
12
Yesterday
48
링크
«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
글 보관함