strange unbound local error?
thebjorn
BjornSteinarFjeldPettersen at gmail.com
Sat Sep 29 14:24:15 EDT 2007
On Sep 29, 8:04 pm, rig... at arcor.de wrote:
> hi folks,
>
> suppose this snipplet:
>
> spam = 42
>
> def eggs():
> print spam
> spam = spam + 1
>
> if __name__=="__main__":
> eggs()
>
> This thows an UnboundLocalError at line 4 (print statement). But if I
> comment out line 5 (variable assignment), no error occurs.
>
> Can you explain me this, please?
>
> Regards,
> Enrico
If you're going to assign to a global variable in a function, you need
to declare it as such:
spam = 42
def eggs():
global spam
print spam
spam = spam + 1
When Python sees an assignment to an identifier in a function it
creates a variable that is local to the function (otherwise you'd be
unable to create local variables with the same name as any of the
global variables).
-- bjorn
More information about the Python-list
mailing list