[Python-Dev] Py3k: Except clause syntax (original) (raw)
Guido van Rossum guido at python.org
Mon Mar 20 04:42:24 CET 2006
- Previous message: [Python-Dev] Py3k: Except clause syntax
- Next message: [Python-Dev] Py3k: Except clause syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 3/18/06, skip at pobox.com <skip at pobox.com> wrote:
The comma and "as" have different precedence in your proposed except clause than they currently do in the import statement. I think that can lead to confusion. In particular, if someone is used to
from foo import bar, baz as flurp I think they might expect that in this try/except statement: try: something() except E1, E2 as e print "something bad happened" if E1 is raised, e will not be (re)bound, but if E2 is raised, then it will be. I know Python is not as heavily an operator-oriented language as C or Perl, but I think it makes sense to maintain the same relative binding precedence between operators in different contexts wherever possible.
This is as good a point as any to explain that 'as' is not an operator. It's a piece of syntax. It behaves different in each context where it is used -- because the context determines what it does. The parallel you suggest simply doesn't make sense: 'as' in the import context causes a simple renaming, and the name should be different for each renamed module, of course. But 'as' in an except clause is not a renaming -- it simply separates the exception "matching pattern" from the variable that is to receive the exception value. Having different exceptions bind different variables doesn't make sense -- how would the code know which variable to use?
There seem to be other places where Python is beginning to require parens even though they aren't strictly necessary to resolve syntactic ambiguity.
In the style guide only, I hope. The parens that are mandatory in a few places are necessary to resolve ambiguity.
This might be one of them.
No, the original proposal (which was already in PEP 3000 anyway) is fine.
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] Py3k: Except clause syntax
- Next message: [Python-Dev] Py3k: Except clause syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]