Comment should describe “why?”, not “how?”, or “what?”, and only when the “why?” is not intuitive.
The problem with comments arise when you update the code but not the comments. This leads to incorrect comments, which might do more harm than no comments at all.
E.g. Good comment: “This workaround is due to a bug in xyz”
Bad comment: “Set variable x to value y”
Note: this only concerns code comments, docstrings are still a good idea, as long as they are maintained
Not the Doppler effect, as that only applies to moving objects, but instead the inverse square law, where the energy of the sound wave decreases by the square of the distance from the origin, since it spreads in a sphere with the energy being spread across the surface of the sphere, resulting in a very quick dropoff in the loudness.
I think it does make sense, it’s a “did this loop exit naturally? If so, do x”. This makes a lot of sense if you, for example, have a loop that checks a condition and breaks if that condition is met, e.g. finding the next item in a list. This allows for the else statement to set some default value to indicate that no match was found.
Imo, the feature can be very useful under certain circumstances, but the syntax is very confusing, and thus it’s almost never a good idea to actually use it in code, since it decreases readability a lot for people not intimately familiar with the language.
Edit: Now, this is just guessing, but what I assume happens under the hood is that the else statement is executed when the StopIteration exception is recieved, which happens when next() is called on an exhausted iterator (either empty or fully consumed)