On Mon, Apr 2, 2018 at 7:24 AM, David Foster <davidf...@gmail.com> wrote: > 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. >
It's not as simple as you think. Here's a demo. Using all of the information available to the compiler, tell me which of these names are valid and which are not: import sys def search_file(fn): with open(fn) as f: for line in f: if "spam" in line and len(line) < 80: print("Mmmm delicious spam") if __name__ == "__main__": try: search_file(sys.argv[1]) except IndexError: print("Please provide a file name", file=sys.stderr) except FileNotFoundError: print("File not found", file=sys.stderr) except OSError as Exception: print("Error %d reading file: %s" % (Exception.errno, Exception.strerror)) except Exception: print("Something else went wrong:") import traceback traceback.print_exc() finally: print("Goodbye.") Okay. Reckon you got them all? Look again there's probably at least one sneaky one that you missed. List them for me, and tell me what's valid and what's not. ChrisA -- https://mail.python.org/mailman/listinfo/python-list