The following code
def myfunc():
x = ""
print("Python is " x)
def hi():
global x
x = "OMG"
hi()
print("Python is " x)
myfunc()
just prints "Python is" twice. I was expecting that the second print-statement prints "Python is OMG".
Does some one has an idea how to accomplish that? I could just declare x as a global variable, but I would like avoid it, because a constraint of my programming task is to only change code inside the myfunc-Function.
CodePudding user response:
"Globalish" is spelled nonlocal
:)
The x
you want to modify inside hi
is not a global variable, but a local variable in the enclosing scope, so you use the nonlocal
keyword to specify the variable named x
in the closest enclosing scope with such a variable.
def hi():
nonlocal x
x = "OMG"