Why is the use of an undefined name not a syntax error?

Devin Jeanpierre jeanpierreda at gmail.com
Sun Apr 1 17:40:22 EDT 2018

> But if it is cheap to detect a wide variety of name errors at compile time, is there any particular reason it is not done?

>From my perspective, it is done, but by tools that give better output
than Python's parser. :)

Linters (like pylint) are better than syntax errors here, because they
collect all of the undefined variables, not just the first one. Maybe
Python could/should be changed to give more detailed errors of this
kind as well. e.g. Clang parse errors for C and C++ are much more
thorough and will report all of your typos, not just the first one.

> P.S. Here are some uncommon language features that interfere with identifying all valid names. In their absence, one might expect an invalid name to be a syntax error:

Also, if statements, depending on what you mean by "invalid":

def foo(x):
  if x:
    y = 3
  return y # will raise UnboundLocalError if not x

-- Devin

More information about the Python-list mailing list