| Store | Cart

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

From: Dj Gilcrease <digi...@gmail.com>
Mon, 10 Aug 2009 08:29:32 -0600
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: <pep number>
 Title: try-except conditional expressions
 Version: <svn version string>
 Last-Modified: <svn date string>
 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: <dates of postings to python-list and python-dev>

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'))

Recent Messages in this Thread
Jeff McAninch Aug 05, 2009 10:22 pm
Raymond Hettinger Aug 06, 2009 12:59 am
P.J. Eby Aug 06, 2009 01:20 am
Nick Coghlan Aug 06, 2009 10:47 am
Dj Gilcrease Aug 06, 2009 11:18 am
MRAB Aug 06, 2009 11:39 am
Jeff McAninch Aug 06, 2009 02:36 pm
Dino Viehland Aug 06, 2009 09:55 pm
MRAB Aug 06, 2009 11:33 pm
Dino Viehland Aug 07, 2009 12:01 am
MRAB Aug 07, 2009 12:22 am
Jeff McAninch Aug 07, 2009 10:14 am
MRAB Aug 07, 2009 11:03 am
Dj Gilcrease Aug 10, 2009 02:29 pm
Jeff McAninch Aug 06, 2009 02:11 am
Antoine Pitrou Aug 06, 2009 11:32 am
Xavier Morel Aug 06, 2009 10:25 am
Russell E. Owen Aug 06, 2009 07:55 pm
MRAB Aug 07, 2009 12:36 am
Kristján Valur Jónsson Aug 07, 2009 10:22 am
ilya Aug 07, 2009 11:06 am
Michael Foord Aug 07, 2009 11:22 am
Alex Martelli Aug 07, 2009 02:55 pm
Steven DAprano Aug 08, 2009 06:02 am
Xavier Morel Aug 08, 2009 08:17 am
Stephen J. Turnbull Aug 08, 2009 01:19 pm
Alexander Kozlovsky Aug 14, 2009 10:41 pm
Steven DAprano Aug 10, 2009 11:45 pm
Messages in this thread