Terry Reedy tjreedy at udel.edu
Thu Nov 9 20:22:13 CET 2006

"Camellia" <breakfastea at gmail.com> wrote in message 
news:1163083074.786927.184170 at i42g2000cwa.googlegroups.com...
> hi all
> why it generates an "UnboundLocalError" when I do the following:
> <code>
> ...

Presumably, the elided code includes a 'def number():' statement

> def main():
>    number = number()

Within a function, a given name can be either global or local, but not 
Here you are expecting the compiler to interpret the first occurance of 
'number' as local and the second as global.  Humans can often resolve such 
ambiguities correctly, but not necessarily always.  So this is too much to 
ask of a program and hence it is not allowed.

As Benjamin said, use two different names for the two different objects 
that you need to use in the same context.

Terry Jan Reedy

More information about the Python-list mailing list