153 votos

Python intenta... excepto coma vs ' como ' excepto en

¿Cuál es la diferencia entre ',' y ' como ' excepto las declaraciones, por ejemplo:

try:
    pass
except Exception, exception:
    pass

y:

try:
    pass
except Exception as exception:
    pass

¿La segunda sintaxis es legal en 2.6? Trabaja en CPython 2.6 en Windows pero el intérprete 2.5 en cygwin se queja que no es válido.

¿Si son válidos en 2.6 que debo usar?

168voto

Amber Puntos 159296

El documento definitivo es PEP-3110: captura de excepciones

Resumen:

  • En Python 3.x, usando as es necesario.
  • En Python 2.6 +, utilice el as sintaxis, ya que es compatible con mucho menos ambiguo y adelante con Python 3.x.
  • En Python 2.5 y versiones anteriores, utilice la versión de coma, puesto que as no es compatible.

28voto

inspectorG4dget Puntos 25092

Sí, es legal. Estoy ejecutando Python 2.6

try:
    [] + 3
except Exception as x:
    print "woo hoo"

>>> 
woo hoo

Actualización: Hay otra razón para utilizar la as de sintaxis. Utilizando , hace las cosas mucho más ambiguo, como otros han señalado; y esto es lo que hace la diferencia. Como de Python 2.6, hay multicatch que le permite capturar múltiples excepciones en uno except bloque. En tal situación, es más expresivo y python decir

except (exception1, exception2) as e

en lugar de decir

except (exception1, exception2), e

lo que todavía funciona

17voto

Alex Gaynor Puntos 6217

la sintaxis "como" es el preferido seguir adelante, sin embargo si tu código necesita trabajar con Python más viejas versiones (2.6 es el primero en apoyar una nueva) entonces necesitará utilizar la sintaxis del coma.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: