Michael, A reasonable question. Python lets you initialize variables but has no explicit declarations. Languages differ and I juggle attributes of many in my mind and am reacting to the original question NOT about whether and how Python should report many possible errors all at once but how ANY language can be expected to do this well. Many others do have a variable declaration phase or an optional declaration or perhaps just a need to declare a function prototype so it can be used by others even if the formal function creation will happen later in the code.
But what I meant in a Python context was something like this: Wronk = who cares # this should fail ... If (Wronk > 5): ... ... Wronger = Wronk + 1 ... X = minimum(Wronk, Wronger, 12) The first line does not parse well so you have an error. But in any case as the line makes no sense, Wronk is not initialized to anything. Later code may use it in various ways and some of those may be seen as errors for an assortment of reasons, then at one point the code does provide a value for Wronk and suddenly code beyond that has no seeming errors. The above examples are not meant to be real but just give a taste that programs with holes in them for any reason may not be consistent. The only relatively guaranteed test for sanity has to start at the top and encounter no errors or missing parts based on an anything such as I/O errors. And I suggest there are some things sort of declared in python such as: Import numpy as np Yes, that brings in code from a module if it works and initializes a variable called np to sort of point at the module or it's namespace or whatever, depending on the language. It is an assignment but also a way to let the program know things. If the above is: Import grumpy as np Then what happens if the code tries to find a file named "grumpy" somewhere and cannot locate it and this is considered a syntax error rather than a run-time error for whatever reason? Can you continue when all kinds of functionality is missing and code asking to make a np.array([1,2,3]) clearly fails? Many of us here are talking past each other. Yes, it would be nice to get lots of info and arguably we may eventually have machine-learning or AI programs a bit more like SPAM detectors that look for patterns commonly found and try to fix your program from common errors or at least do a temporary patch so they can continue searching for more errors. This could result in the best case in guessing right every time. If you allowed it to actually fix your code, it might be like people who let their spelling be corrected and do not proofread properly and send out something embarrassing or just plain wrong! And it will compile or be interpreted without complaint albeit not do exactly what it is supposed to! -----Original Message----- From: Python-list <python-list-bounces+avi.e.gross=gmail....@python.org> On Behalf Of Michael F. Stemper Sent: Monday, October 10, 2022 9:22 AM To: python-list@python.org Subject: Re: What to use for finding as many syntax errors as possible. On 09/10/2022 10.49, Avi Gross wrote: > Anton > > There likely are such programs out there but are there universal > agreements on how to figure out when a new safe zone of code starts > where error testing can begin? > > For example a file full of function definitions might find an error in > function 1 and try to find the end of that function and resume > checking the next function. But what if a function defines local functions within it? > What if the mistake in one line of code could still allow checking the > next line rather than skipping it all? > > My guess is that finding 100 errors might turn out to be misleading. > If you fix just the first, many others would go away. If you spell a > variable name wrong when declaring it, a dozen uses of the right name may cause errors. > Should you fix the first or change all later ones? How does one declare a variable in python? Sometimes it'd be nice to be able to have declarations and any undeclared variable be flagged. When I was writing F77 for a living, I'd (temporarily) put: IMPLICIT CHARACTER*3 at the beginning of a program or subroutine that I was modifying, in order to have any typos flagged. I'd love it if there was something similar that I could do in python. -- Michael F. Stemper 87.3% of all statistics are made up by the person giving them. -- https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list