[Python-ideas] except expression

MRAB python at mrabarnett.plus.com
Thu Feb 13 00:56:02 CET 2014


On 2014-02-12 21:02, Ram Rachum wrote:
> Hi,
>
> Here's an idea that would help shortening code. Allow a ternary
> expression based on except, like so:
>
>      first_entry = entries[0] except IndexError else None
>      item = my_queue.get() except queue.Empty else None
>      response_text = request('http://whatever.com').text except HttpError else "Can't access data"
>
> Aside from the fact that this would be a big grammar addition, a big
> problem here is the usage of the `else` keyword, that when used with
> except usually means "what would happen if there wasn't an exception"
> and here means the opposite. But I couldn't think of a nicer syntax.
>
If you don't mind having a colon in the middle of an expression:

     first_entry = entries[0] except IndexError: None
     item = my_queue.get() except queue.Empty: None
     response_text = request('http://whatever.com').text except 
HttpError: "Can't access data"

What would its precedence be? Maybe it would apply to the preceding
expression or subexpression:

     total = (entries[0] except IndexError: 0) + (entries[-1] except 
IndexError: 0)

> I realize that this is a big change and that most people would be
> opposed to this... But I guess I just wanted to share my idea :)
>



More information about the Python-ideas mailing list