On Sun, 26 Feb 2006 21:58:30 +0100, Diez B. Roggisch wrote:

> [EMAIL PROTECTED] schrieb:
>> Can you please tell me what is the meaning of
>>  UnboundLocalError: local variable 'colorIndex' referenced before
>> assignment 
>> 
>> in general?
> 
> Well, pretty much of what it says: You tried to access a variable without 
> prior assignment to it. Like this:
> 
> 
> a = b**2 + c**2
> 
> Won't work. But if you do
> 
> b = 2
> c = 3
> a = b**2 + c**2
> 
> it works. I suggest you read a python tutorial - plenty of the out there, 
> google is as always your friend.


Diez' advice is good, but his example is wrong: it will raise a NameError
exception.

When you have a function like this:

def foo(x):
    z = x + y
    return z

Python's scoping rules treat x and z as local variables, and y as a
global variable. So long as y exists, the function will work.

When you do this:

def bar(x):
    y = 2
    z = x + y
    return z

the scoping rules treat y as a local variable, because you assigned to it.

But with this:

def baz(x)
    z = x + y
    y = 2
    return z
    
the scoping rules see the assignment to y at compile time, so y is treated
as a local variable. But at run time, y is accessed before it has a value
assigned to it: UnboundLocalError

Hope this helps.



-- 
Steven.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to