
Just as a further note, it's perfectly possible to write a helper: def ensure_match(pattern, string): m = re.match(pattern, string) if m is None: raise ValueError(f"Provided string did not match {pattern}") return m If the project is concerned about failures to check the return value of matches, then using a helper like this seems like a reasonable way of addressing this (far more effective than living with the problem until a flag gets added to the stdlib and the project can drop support for older Python versions...) If the intention here is simply to "make it easier for people to remember" in the future, without being tied to any actual real world use case, then I don't see how adding a (just as easily forgettable) boolean flag is any significant improvement. Paul On Sun, 22 Oct 2023 at 10:19, Stephen J. Turnbull < turnbull.stephen.fw@u.tsukuba.ac.jp> wrote:
Chris Angelico writes:
Why create a new argument, then mandate that you use it everywhere, just to achieve what's already happening?
"Newbies don't read code backwards very well" seems to be the point.
While I'm not of the school that "I learned this painfully, so newbies should learn this painfully", I do think that novice Python programmers should learn that
1. "None has no .xxx attribute" means that some previous code (often but not always a regex match) was unable to perform some task and returned None to indicate failure. 2. If the failure was expectable, your code is buggy because it didn't test for None, and if it was unexpected, some code somewhere is buggy because it allowed an invariant to fail.
On the cost side, there are so many cases where a more finely divided Exception hierarchy would help novices quite a bit but experts very little that this case (easy to learn) would open the floodgates. I believe Guido has specifically advised against such a hierarchy. I'm against this change.
Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/MIE4OF... Code of Conduct: http://python.org/psf/codeofconduct/