[Python-ideas] Single line single expression try/except syntax
Michael Selik
mike at selik.org
Sun Jan 27 16:03:08 EST 2019
Any discussion of except expressions should reference PEP 463 and respond
to the arguments there.
https://www.python.org/dev/peps/pep-0463/
On Sun, Jan 27, 2019, 3:52 AM Alex Shafer via Python-ideas <
python-ideas at python.org wrote:
> Hello,
>
> I'd like to discuss an idea I had to shorten the syntax for the common
> case of having a try/except/finally/else block where all of the following
> conditions are met:
>
> * There is only one except block, no finally or else
> * The exception is not captured in the except block, i.e. `except
> KeyError:` not `except KeyError as e:`
> * The contents of the except block is only a single expression
> * Perhaps, the expression starts with a control word such as pass, break,
> continue, return, raise. As it happens, everything useful I can think to do
> with this right now currently uses these. Unclear to me if this should be a
> requirement.
>
> The syntax I envisioned would be something like the following:
>
> try on ValueError pass:
> some_list.remove('value')
>
> I'm not at all attached to the `on` token specifically, but I think
> something is necessary there.
>
> Other examples:
>
> def func():
> try on KeyError, ValueError return False:
> dict_of_lists['key'].remove('value')
>
> key = 'foo'
> try on KeyError raise MyApplicationError(f'{key} not found'):
> a_dict[key]
>
>
>
> for i in range(100):
> try on TypeError continue:
> a_list[i] += 1
> etc()
>
> I realize this could be accomplished with context managers, but that seems
> like overkill to simply throw away the exception, and would increase the
> overall required code length.
>
> Thanks for your input!
> Alex
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190127/080893a8/attachment.html>
More information about the Python-ideas
mailing list