Why Does Python Throw an \'UnboundLocalError\' and How Can I Fix It?

Mary-Kate Olsen
Release: 2024-11-25 07:37:21
Original
978 people have browsed it

Why Does Python Throw an

Error: "UnboundLocalError: local variable referenced before assignment" in Python

When you encounter this error, it's because you're attempting to access a local variable before it's been initialized or defined. Let's explore the code that's causing this issue:

Var1 = 1
Var2 = 0

def function():
    if Var2 == 0 and Var1 > 0:
        print("Result 1")
    elif Var2 == 1 and Var1 > 0:
        print("Result 2")
    elif Var1 < 1:
        print("Result 3")
    Var1 -= 1

function()
Copy after login

This code defines two variables, Var1 and Var2, outside of the function function(). Within the function, we're trying to manipulate Var1, which is fine. However, the problem arises when we access Var1 without initializing it within the function's scope.

Solution Using Global Variables:

To resolve this issue, we can declare Var1 as a global variable within the function. This tells Python to use the Var1 defined outside the function instead of creating a new local variable inside it. To achieve this, add the following line at the beginning of the function:

global Var1
Copy after login

Alternative Solution: Use Nonlocal Variables:

Python 3 introduces the nonlocal statement, which allows you to modify a variable defined in an enclosing scope. Instead of declaring Var1 as a global variable, we can use the following code within the function:

nonlocal Var1
Var1 -= 1
Copy after login

Conclusion:

UnboundLocalError occurs when you try to reference a local variable that hasn't been initialized or defined. To fix this, you can either declare the variable as global or use the nonlocal keyword to access the variable defined in an enclosing scope.

The above is the detailed content of Why Does Python Throw an \'UnboundLocalError\' and How Can I Fix It?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template