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