Consider the following code:
def g():
    a = {}
    b = 0
    def f():
        a[0] = b
    f()
    print(a)
    return a
a = g()
print(a)
It gives the following output when executed:
{0: 0}
{0: 0}
But if I try to update b in f() as in
def g():
    a = {}
    b = 0
    def f():
        a[0] = b
        b+=1
    f()
    print(a)
    return a
a = g()
print(a)
It throws the following error:
UnboundLocalError: local variable 'b' referenced before assignment
Is this expected? I need to update b inside f(). Is that impossible?
 
     
    