David Foster <davidf...@gmail.com> writes: > My understanding is that the Python interpreter already has enough > information when bytecode-compiling a .py file to determine which > names correspond to local variables in functions. That suggests it has > enough information to identify all valid names in a .py file and in > particular to identify which names are not valid. > > If broken name references were detected at compile time, it would > eliminate a huge class of errors before running the program: missing > imports, call of misspelled top-level function, reference to > misspelled local variable.
I'm not sure what you mean by "valid name" and "broken name references". The usual error is about unbound names, and binding happens at run-time. Consider this rather contrived example: def g(a): if f1(a): x = a else: y = 2*a return x+1 if f2(a) else y+1 ('a' is there only to prevent some obvious optimisations.) Are there any broken name references here? You might get an UnboundLocalError, though that depends on what f1 and f2 return. <snip> -- Ben. -- https://mail.python.org/mailman/listinfo/python-list