Need help with understanding the following sentence from PEP 227 and the Python Language Reference
If a variable is referenced in an enclosed scope, it is an error to delete the name. The compiler will raise a SyntaxError for 'del name'.
Lack of examples caused I couldn't reproduce an error at compile time, so an explanation with examples is highly desirable.
The following raises the execption:
because the
spamvariable is being used in the enclosed scope ofbar:Python detects that
spamis being referenced inbarbut does not assign anything to that variable, so it looks it up in the surrounding scope offoo. It is assigned there, making thedel spamstatement a syntax error.This limitation was removed in Python 3.2; you are now responsible for not deleting nested variables yourself; you'll get a runtime error (
NameError) instead: