I have a trivial example:
def func1():
    local_var = None
    def func(args):
        print args,
        print "local_var:", local_var
        local_var = "local"
    func("first")
    func("second")
func1()
first local_var: None second local_var: local
However, my actual output is:
first local_var:
Traceback (most recent call last):
  File "test.py", line 13, in 
    func1()
  File "test.py", line 10, in func1
    func("first")
  File "test.py", line 6, in func
    print "local_var:", local_var
UnboundLocalError: local variable 'local_var' referenced before assignment
My understanding of python scoping rules dictate that this should work as expected. I have other code where this works as expected, but reducing one non-working code fragment to it's trivial case above also doesn't work. So I'm stumped.