UnboundLocalError: local variable 'colorIndex' referenced
Rick Zantow
rzantow at gmail.com
Sun Feb 26 16:14:50 EST 2006
silverburgh.meryl at gmail.com wrote in news:1140987642.195734.187540
@t39g2000cwt.googlegroups.com:
> Can you please tell me what is the meaning this error in general?
>
> UnboundLocalError: local variable 'colorIndex' referenced before
> assignment
>
> In my python script,
> I have a variable define and init to 0, like this
> colorIndex = 0
>
> and in one of my functions, I increment it by 1
> def myFunc
> colorIndex += 1
>
>
It's a scoping issue. Within myFunc, if colorIndex receives a value
(that is, if you assign something to it, as you do here), Python
requires a local variable, one known within the scope of function. If
you had only *read* the variable (x = colorIndex, for instance), then
Python will first look for a local variable, and, finding none, will
then look for a global variable, which it would find in this case. The
net effect of all this is a common gotcha for new Python users: the
'colorIndex' that is assigned to within myFunc is *not* the same as the
one you assigned 0 to earlier; they just happen to share the same name.
You can get around this in various ways. One is to declare the variable
in myFunc, like this:
def myFunc
global colorIndex
colorIndex += 1
...
--
rzed
More information about the Python-list
mailing list