a = 4
def foo(x):
    a = 10
foo(2)
print(a)
#prints 4
The code above doesn't change a
a = 4
def foo(x):
   return a + x
result = foo(10)
print(result)
#prints out 14
I don't quite understand how these two act differently. The second one, the global variable obviously affects the local variable in foo. But if I change a in the first one inside the foo, nothing happens to a in the global frame. What is happening?
 
     
     
    