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()
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
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
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!