UnboundLocalError Python Origin: Application & API Last updated 15 Oct 2026

UnboundLocalError: cannot access local variable 'x' where it is not associated with a value

A function assigns to a variable somewhere, which makes it local everywhere in that function — so reading it before the assignment fails.

Exact message you may see referenced before assignmentcannot access local variable
Seen on: Python

Meaning

Python decides scope at compile time. If a function contains x = ..., every x in that function is local, even before the assignment. Modifying a module-level counter inside a function is the classic case.

Common causes

  • Incrementing a global inside a function (count += 1)
  • Variable assigned only in one branch
  • Assigned in try but used in except/finally

⚡ Quick fix

  1. Pass values in and return results instead of using globals
  2. Use global/nonlocal deliberately
  3. Initialise before branches

Detailed fix by platform

Python

  1. python
    def increment():
        global counter
        counter += 1

How to diagnose

  1. Assignment — Where is it assigned in the function?
  2. Read — Is it read before that?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

already declared — SyntaxError: Identifier 'x' has already been declared (JavaScript)already declaredAttributeError — AttributeError: 'X' object has no attribute 'y' (Python)AttributeErrorConnectionRefusedError — ConnectionRefusedError: [Errno 111] Connection refused (Python)ConnectionRefusedErrorCS0103 — error CS0103: The name 'x' does not exist in the current context (.NET)CS0103Event loop is closed — RuntimeError: Event loop is closed (Python)Event loop is closedNameError — NameError: name 'x' is not defined (Python)NameErrorReferenceError — ReferenceError: x is not defined (JavaScript)ReferenceErrorTDZ — ReferenceError: Cannot access 'x' before initialization (JavaScript)TDZUnboundLo…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.