I believe people now discuss this both on python-dev and python-ideas, though since I'm new to both lists, I can't really tell where this belongs.
I played a little with this syntax, my try_ function and @catch decorator (which are at http://mit.edu/~unknot/www/try_cond.py): # x = float(string) except float('nan') if ValueError x = try_(float, string, except_ = float('nan'), if_ = ValueError) @catch(ValueError = float('nan')) def x1(): return float(string) # y = float(string) except ValueError: float('nan') y = try_(float, string, { ValueError: float('nan') }) @catch({ValueError: float('nan')}) def y1(): return float(string) # try: # z = open(string, 'r') # except IOError as e: # if e.errno == 2: # z = 'not_exist' # else: # raise # z = try_(open, string, 'r', iocatcher({2: 'no file!'})) @catch(iocatcher({2: 'nothing!'})) def z1(): return open(string, 'r') Here are my overall feelings: (1) it would be interesting to come up with syntax for except/if clause, but it's not obvious how to make one and this fact itself may kill the idea. (2) the more reasonable approach to things like this is by defining a separate block and then performing a "catch" operation with it. Unfortunately, this looks very clumsy as currently this can only be done by defining a separate function. I think code blocks are a good direction to explore. 2009/8/7 Kristján Valur Jónsson <krist...@ccpgames.com>: > Unless I am very much mistaken, this is the approach Ruby takes. > Everything is an expression. For example, the value of a block is the value > of > The last expression in the block. > > I've never understood the need to have a distinction betwen statements and > expressions, not when expressions can have side effects. It's like that > differentce between procedures and functions in pascal that only serves to > confuse > > K >> -----Original Message----- >> From: python-dev-bounces+kristjan=ccpgames....@python.org >> [mailto:python-dev-bounces+kristjan=ccpgames....@python.org] On Behalf >> Of Xavier Morel >> Sent: 6. ágúst 2009 10:25 >> To: python-dev@python.org >> Subject: Re: [Python-Dev] (try-except) conditional expression similar >> to (if-else) conditional (PEP 308) > > >> Wouldn't it be smarter to fix the issue once and for all by looking >> into making Python's compound statements (or even all statements >> without restrictions) expressions that can return values in the first >> place? Now I don't know if it's actually possible, but if it is the >> problem becomes solved not just for try:except: (and twice so for >> if:else:) but also for while:, for: (though that one's already served >> pretty well by comprehensions) and with:. >> > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/ilya.nikokoshev%40gmail.com > _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com