
The *re* module is a black swan, because most of stdlib raises exceptions on invalid arguments or not being able to deliver. It's impossible to change *re* now, so wrapping the calls should be the right solution. -- Juancarlo Añez mailto:apalala@gmail.com On Sun, Oct 22, 2023 at 5:19 AM 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/