[Python-Dev] PEP 463: Exception-catching expressions

Nick Coghlan ncoghlan at gmail.com
Sun Feb 23 02:29:16 CET 2014


On 23 February 2014 11:11, MRAB <python at mrabarnett.plus.com> wrote:
> On 2014-02-23 00:09, Chris Angelico wrote:
>> On Sun, Feb 23, 2014 at 11:00 AM, Thomas Wouters <thomas at python.org>
>> wrote:
>>> On Sat, Feb 22, 2014 at 2:08 AM, Thomas Wouters <thomas at python.org>
>>> wrote:
>>>>
>>>> (FWIW, I have a working patch without tests that allows all of
>>>> these, I'll upload it tonight so people can play with it. Oh, and
>>>> FWIW, currently I'm +0 on the idea, -0 on the specific syntax.)
>>>
>>>
>>> http://bugs.python.org/issue20739 is the patch.
>>
>> Thanks!
>>
>> You make a comment about precedence. When I wrote that up, it was
>> basically just "that seems about right"; whether it's equal to
>> lambda, equal to if/else, above both, below both, or in between, is
>> free to be tweaked according to what makes sense. Nobody has to date
>> discussed the exact precedence order, so feel free to tweak it for
>> the benefit of implementation.
>>
> My feeling is that catching exceptions should have a lower precedence
> than the other parts of an expression, but higher than comma, so:
>
> A if C else B except E: D
>
> would be parsed as:
>
> (A if C else B) except E: D
>
> I think that's because it's kind of replacing:
>
> try:
>     _ = expr
> except E:
>     _ = D
>
> with the try..except enclosing the expression.

Note that mandatory parentheses means we can duck the precedence
question entirely, which I count as another point in favour of
requiring them :)

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list