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

Jeff Allen ja.py at farowl.co.uk
Sat Feb 22 21:28:01 CET 2014


On 22/02/2014 16:36, Brett Cannon wrote:
>
> On Sat, Feb 22, 2014 at 4:13 AM, Antoine Pitrou <solipsis at pitrou.net 
> <mailto:solipsis at pitrou.net>> wrote:
>
>     On Fri, 21 Feb 2014 09:37:29 -0800
>     Guido van Rossum <guido at python.org <mailto:guido at python.org>> wrote:
>     > I'm put off by the ':' syntax myself (it looks to me as if
>     someone forgot a
>     > newline somewhere) but 'then' feels even weirder (it's been
>     hard-coded in
>     > my brain as meaning the first branch of an 'if').
>
>     Would 'else' work rather than 'then'?
>
>
> thing = stuff['key'] except KeyError else None
>
> That reads to me like the exception was silenced and only if there is 
> no exception the None is returned, just like an 'else' clause on a 
> 'try' statement.
>
> I personally don't mind the 'then' as my brain has been hard-coded to 
> mean "the first branch of a statement" so it's looser than being 
> explicitly associated with 'if' but with any multi-clause statement.
>
I read *except* as 'except if', and *:* as 'then' (often), so the main 
proposal reads naturally to me.  I'm surprised to find others don't 
also, as that's the (only?) pronunciation that makes the familiar 
if-else and try-except constructs approximate English.

Isn't adding a new keyword (*then*) likely to be a big deal? There is 
the odd example of its use as an identifier, just in our test code:
http://hg.python.org/cpython/file/0695e465affe/Lib/test/test_epoll.py#l168
http://hg.python.org/cpython/file/0695e465affe/Lib/test/test_xmlrpc.py#l310

Jeff Allen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20140222/efc3fc8c/attachment.html>


More information about the Python-Dev mailing list