Python scope problems only when _assigning_ to a variable

Posted by wallacoloo on Stack Overflow See other posts from Stack Overflow or by wallacoloo
Published on 2010-05-22T04:16:14Z Indexed on 2010/05/22 4:20 UTC
Read the original article Hit count: 235

Filed under:
|
|
|

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.

© Stack Overflow or respective owner

Related posts about python

Related posts about error