Hi.  I'm new to Python, and downloaded a Windows copy a little while 
ago.  I was doing some experiments with nested functions, and ran into 
something strange.

This code:

def outer():
        val = 10
        def inner():
                print val
        inner()

outer()

..prints out the value '10', which is what I was expecting.

But this code..

def outer():
        val = 10
        def inner():
                print val
                val = 20
        inner()
        print val

outer()

..I expected to print '10', then '20', but instead got an error:

   print val
UnboundLocalError: local variable 'val' referenced before assignment.

I'm thinking this is some bug where the interpreter is getting ahead of 
itself, spotting the 'val = 20' line and warning me about something that 
doesn't need warning.  Or am I doing something wrong?

Thanks,
-Sean Givan
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to