Nov 10, 2014

How do you set a global variable in a function?

Did you do something like this? 
x = 1 # make a global 
def f():
print x # try to print the global
...
for j in range(100):
if q>3:
x=4

Any variable assigned in a function is local to that function. unless it is specifically declared global. Since a value is bound to x as the last statement of the function body, the compiler assumes that x is local. Consequently the print x attempts to print an uninitialized local variable and will trigger a NameError. 
The solution is to insert an explicit global declaration at the start of the function: 
def f():
global x
print x # try to print the global
...
for j in range(100):
if q>3:
x=4

In this case, all references to x are interpreted as references to the x from the module namespace

0 comments:

Post a Comment