I have the following Python code snippet:
# code 1
# makes an error
def func1():
a += 1
a = 1
try:
func1()
print(a)
except UnboundLocalError as e:
print(e)
# code 2
# makes no errors
def func2():
b.append(1)
b = []
func2()
print(b)
In this code, I observe that a
does not change its value, while b
behaves like a global variable. I would like to understand the reason behind this difference in behavior.
In the first code snippet, when the func1()
function tries to increment the value of a using a += 1
, it raises an UnboundLocalError
exception. On the other hand, in the second code snippet, the func2()
function successfully appends an element to the list b
.
I want to know why the first code snippet raises an error while the second code snippet works correctly. Can you explain the underlying reason for this behavior?
I would appreciate any insights or explanations regarding this issue. Thank you in advance!
I expected that the key difference between a
and b
is that a
is an immutable object whereas b
is a mutable one.