¿Cuál es el principio de EAFP en Python?

¿Qué se entiende por “usar el principio de EAFP” en Python? ¿Podría dar algún ejemplo?

Desde el glosario :

Más fácil pedir perdón que permiso. Este estilo de encoding de Python común asume la existencia de claves o atributos válidos y detecta 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 el estilo LBYL común a muchos otros idiomas, como C.

Un ejemplo sería un bash 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 clave dentro del diccionario dos veces, y también podría considerarse un poco menos legible.

Yo lo llamo “progtwigción optimista”. La idea es que la mayoría de las veces las personas harán lo correcto y los errores deberían ser pocos. Entonces codifique primero para que suceda lo “correcto”, y luego detecte los errores si no lo hacen.

Mi sensación es que si un usuario va a cometer errores, debe ser quien sufra las consecuencias del tiempo. Las personas que usan la herramienta de la manera correcta son aceleradas.