EAFP es un consejo de gema en la comunidad de Python que puede no ser familiar para los programadores de otras comunidades. Rápidamente, EAFP o ‘Más fácil pedir perdón que permiso’ significa tener una visión optimista del código en el que está trabajando, y si se lanza una excepción, tómela y trátela más tarde.
“Recuerda siempre que es mucho más fácil disculparse que obtener permiso. En este mundo de las computadoras, lo mejor que se puede hacer es hacerlo”. — Gracia Hopper
Es diferente al método tradicional de LBYL o ‘Mira antes de saltar’ , donde verificas si tu código tendrá éxito y continúas si y solo si no hay error.
Ejemplo: suponga que desea abrir un archivo y leer su contenido.
Código de ‘permiso’:
import os # Race condition File_name ="test.txt" if os.access(File_name, os.R_ok): with open(File_name) as f: print(f.read()) else: print("No such file accessed")
Cuando solicita permiso para leer el archivo, la respuesta es ‘Sí’, pero en el momento en que realmente va a leer, la respuesta cambia. Aquí es donde te abres a la condición de Carrera.
Código de ‘perdón’: lo que debe hacer en su lugar es continuar con el flujo y pedir perdón, es decir, detectar el error mediante el manejo de excepciones.
# No Race condition File_name ="test.txt" try: f = open(File_name) except IOError: print("No such file accessed") else: with f: print(f.read())
Las ventajas del método EAFP:
- Explícito es mejor que implícito
- Falla, pero falla rápido y triunfa más rápido
- Falla, pero falla barato
- no te repitas