[Python-Dev] (try-except) conditional expression similar to (if-else) conditional (PEP 308) (original) (raw)

Dj Gilcrease digitalxero at gmail.com
Mon Aug 10 16:29:32 CEST 2009


I figure I would write up the PEP draft, I have never tried writing a pep before, but i did read PEP 1 and tried to follow it's formating guides. If there are no additions to the idea, then it seems there just needs to be a consensus on the syntax before submitting it to the peps list

I posted this to the python-ideas version of this thread already, but since more people seem to be posting to the python-dev list I will post it here as well

PEP: Title: try-except conditional expressions Version: Last-Modified: Author: Jeff McAninch <mcaninch at lanl.gov>, Dj Gilcrease <digitalxero at gmail.com> Discussions-To: python-ideas at python.org Status: Draft Type: Standards Track Content-Type: text/plain Created: 06-Aug-2009 Python-Version: 2.7/3.2 Post-History:

Abstract: I very often want something like a try-except conditional expression similar to the if-else conditional instead of resorting to a multi-line try-except block.

Design Goals: The new syntax should * Be simple to read * Be intuitive so people who may use it infrequently dont need to go lookup the format every time * Make it obvious what is happening

Modivation: Often when doing calculations or string recasting (to int, float, etc) it is required to wrap the section in a simple try-except where the exception just assigns a default value. It would be more readable and consise if these type of try-excepts could be written on a single line.

Issues: Unknown

Specification: All 3 components would just be ordinary expressions. The exception definition would be allowed to resolve to a single exception or a tuple of exceptions, just as it is in a normal try/except statement.

Syntax Ideas: Option 1: x = float(string) except float('nan') if ValueError op(float(string) except float('nan') if ValueError)

Option 2: x = float(string) except ValueError: float('nan') op(float(string) except ValueError: float('nan'))

Option 3: x = float(string) except ValueError else float('nan') op(float(string) except ValueError else float('nan'))



More information about the Python-Dev mailing list