Python scope problems only when _assigning_ to a variable
- by wallacoloo
So I'm having a very strange error right now. I found where it happens, and here's the simplest code that can reproduce it.
def parse_ops(str_in):
    c_type = "operator"
    def c_dat_check_type(t):
        print c_type
        #c_type = t
    c_dat_check_type("number")
>>> parse_ops("12+a*2.5")
If you run it as-is, it prints "operator". But if you uncomment that line, it gives an error:
Traceback (most recent call last):
  File "<pyshell#212>", line 1, in <module>
    parse_ops("12+a*2.5")
  File "<pyshell#211>", line 7, in parse_ops
    c_dat_check_type("number")
  File "<pyshell#211>", line 4, in c_dat_check_type
    print c_type
UnboundLocalError: local variable 'c_type' referenced before assignment
Notice the error occurs on the line that worked just fine before.
Any ideas what causes this and how I can fix this? I'm using Python 2.6.1.