2012-07-06 18 views

Respuesta

143

Desde el glossary:

más fácil pedir perdón que permiso. Este estilo de codificación de Python común asume la existencia de claves o atributos válidos y atrapa excepciones si la suposición es falsa. Este estilo limpio y rápido se caracteriza por la presencia de muchas declaraciones try y except. La técnica contrasta con la LBYL style común a muchos otros lenguajes como C

Un ejemplo podría ser un intento de acceder a una clave de diccionario.

EAFP:

try: 
    x = my_dict["key"] 
except KeyError: 
    # handle missing key 

LBYL:

if "key" in my_dict: 
    x = my_dict["key"] 
else: 
    # handle missing key 

La versión LBYL tiene que buscar la llave dentro del diccionario dos veces, y también podría considerarse un poco menos legible.

+4

corto con buenos ejemplos. –

+14

Una mejora sería que otra ventaja es evitar las condiciones de carrera ... por ejemplo, simplemente intente abrir un archivo y, si lo obtiene, lo tiene. En lugar de ver * si puede obtenerlo *, entonces intente obtenerlo luego y descubra que en la minúscula cantidad de tiempo entre el cheque y el intento de acceso, puede obtenerlo más. –

+18

Python también proporciona una forma de evitar ambos, si el controlador solo está asignando un valor predeterminado a 'x' cuando la clave no existe:' x = mydict.get ('key') 'devolverá' None 'if' 'key'' no está en 'my_dict'; también podría hacer '.get ('clave', )', y luego a x se le asignará algo si la clave no está en el diccionario. 'dict.setdefault()' y 'collections.defaultdict' son buenas cosas para evitar el exceso de código también. – JAB

Cuestiones relacionadas