I have this code which works as expected:
foo = 123
def fooBar():
print(foo) ### cannot find foo from local scope, checks prev and prints 123
#foo = 987
#print(foo)
fooBar()
But when I change the code to the following,
foo = 123
def fooBar():
print(foo) ### blows up here...
foo = 987
print(foo)
fooBar()
it blows up on the print statement:
Traceback (most recent call last):
File "python", line 9, in <module>
File "python", line 4, in fooBar
UnboundLocalError: local variable 'foo' referenced before assignment
I know I can get around the problem using global foo inside my function, but the error I was expected was not on line number I was expecting. I was assuming it would still print 123 and then blow up when I try to assign another value to foo.
It seems as if Python parses fooBar() and knows I do an assignment of foo later in local function and then blows up on the print, instead of grabbing the global value? Is that right?