Programming/[Python]Basic

파이썬 UnboundLocalError 에러를 해결하는 방법 | 기술블로그

호락호락한순무 2023. 10. 18. 21:08
반응형

파이썬 UnboundLocalError 에러를 해결하는 방법

파이썬을 사용하다보면 가끔 UnboundLocalError라는 에러 메세지를 만날 수 있습니다. 이 에러는 로컬 변수를 할당하기 전에 참조했을 때 발생하는 오류이며, 주로 함수 내부에서 변수를 잘못 사용했을 때 발생합니다. 이번 블로그 포스트에서는 이러한 UnboundLocalError 에러를 해결하는 방법에 대해 알아보겠습니다.

목차

  1. UnboundLocalError란?
  2. UnboundLocalError의 원인
  3. UnboundLocalError 해결 방법
    1. 전역 변수로 선언
    2. nonlocal 키워드 사용
    3. 함수 내부에서 변수 초기화
  4. 마무리

1. UnboundLocalError란?

UnboundLocalError는 파이썬에서 발생하는 오류 중 하나로, 로컬 변수를 할당하기 전에 참조할 경우 발생합니다. 이는 파이썬의 스코프 규칙에 따라 발생하는데, 함수 내부에서 로컬 변수를 참조할 때 해당 변수가 아직 할당되지 않았다면 오류가 발생합니다.

예를 들어, 아래 코드에서 변수 x를 할당하기 전에 먼저 참조하는 경우 UnboundLocalError가 발생합니다.

def test():
    print(x)
    x = 10

test()

위 코드는 UnboundLocalError: local variable 'x' referenced before assignment라는 오류 메세지와 함께 실행될 때 에러가 발생합니다.

2. UnboundLocalError의 원인

UnboundLocalError는 주로 함수 내부에서 변수를 잘못 사용했을 때 발생합니다. 함수 내에서 로컬 변수를 참조하기 전에 해당 변수를 할당하지 않았을 경우에 이 오류가 발생합니다. 이러한 오류가 발생하는 이유는 파이썬의 스코프 규칙 때문입니다.

파이썬은 변수를 참조할 때, 로컬 스코프에서 먼저 변수를 찾게됩니다. 그러나 해당 스코프에서 변수가 할당되기 전에 참조하게 된다면 UnboundLocalError가 발생합니다.

3. UnboundLocalError 해결 방법

UnboundLocalError를 해결하기 위해서는 다음과 같은 방법들을 사용할 수 있습니다.

3.1 전역 변수로 선언

가장 간단한 해결 방법은 변수를 전역 변수로 선언하는 것입니다. 이렇게 전역 변수로 선언하면 함수 내부에서도 해당 변수를 참조할 수 있습니다.

x = None

def test():
    global x
    print(x)
    x = 10

test()

위 코드에서는 global 키워드를 통해 x 변수를 전역 변수로 선언하고 있습니다. 따라서 함수 내부에서도 x 변수를 참조할 수 있게 됩니다.

3.2 nonlocal 키워드 사용

만약 함수 내부에서 정의된 중첩 함수에서 해당 변수를 참조해야 한다면 nonlocal 키워드를 사용하여 변수를 참조할 수 있습니다.

def outer():
    x = None

    def inner():
        nonlocal x
        print(x)
        x = 10

    inner()

outer()

위 코드에서는 nonlocal 키워드를 통해 x 변수를 참조하고 있습니다. 이렇게 하면 내부 함수인 inner()에서도 x 변수를 참조할 수 있게 됩니다.

3.3 함수 내부에서 변수 초기화

또 다른 방법으로는 변수를 함수 내부에서 미리 초기화하는 것입니다. 이렇게 하면 변수를 참조할 때 초기화되어 있기 때문에 UnboundLocalError가 발생하지 않습니다.

def test():
    x = None
    print(x)
    x = 10

test()

위 코드에서는 x 변수를 초기화한 후에 참조하고 있습니다. 따라서 UnboundLocalError가 발생하지 않습니다.

4. 마무리

이번 블로그 포스트에서는 파이썬의 UnboundLocalError 에러에 대해 알아보았습니다. UnboundLocalError는 함수 내부에서 변수를 잘못 사용했을 때 발생하는 오류이며, 로컬 변수를 할당하기 전에 참조할 경우 발생합니다. 오류를 해결하기 위해서는 변수를 전역 변수로 선언하거나, nonlocal 키워드를 사용하여 변수를 참조하거나, 함수 내부에서 변수를 미리 초기화하면 됩니다. 앞으로 이러한 UnboundLocalError 오류를 만났을 때 어떻게 해결해야 할지에 대한 참고자료로 활용해 주시기 바랍니다.

반응형
//