On 14/11/2019 13:06, R.Wieser wrote:
Hello all,

I've just tried to use a "nonlocal MyVar" statement in a procedure
defenition, but it throws an error saying "Syntax error: no binding for
nonlocal 'MyVar' found.

According to platform.python_version() I'm running version 3.8.3

Why am I getting that error ? (already googeled ofcourse)

Testcode:
- - - - - - - - - - - -
Def Proc1()
     nonlocal MyVar
     MyVar = 5

MyVar = 7
Proc1()
print(MyVar)
- - - - - - - - - - - -
I've also tried moving "MyVar = 7" to the first line, but that doesn't
change anything.  Using "global MyVar" works..

The Language Reference says (https://docs.python.org/3/reference/simple_stmts.html#the-nonlocal-statement):

"The nonlocal statement causes the listed identifiers to refer to previously bound variables in the nearest enclosing scope *excluding globals.*" (my emphasis.)

MyVar is a global here, so nonlocal explicitly doesn't pick it up.

--
Rhodri James *-* Kynesim Ltd
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to