> 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 -- https://mail.python.org/mailman/listinfo/python-list