EAFP

EAFP stands for easier to ask forgiveness than permission and is a commonly used coding style in Python. The idea behind EAFP is to write code that assumes the presence of valid attributes and methods, and handles exceptions if they aren’t present.

EAFP aligns with Python’s design philosophy of simplicity and readability. By using EAFP, you can often write more concise and efficient code, as it minimizes the need for explicit checks and instead relies on Python’s built-in exception-handling mechanisms.

In practice, an example of using EAFP would be that instead of checking if a file exists before trying to open it, you go ahead and try to open it, catching the exception if it doesn’t exist. This approach can lead to cleaner code, especially in environments where race conditions might make pre-checks unreliable.

Python’s rich set of exceptions facilitates using EAFP in your code, allowing you to handle errors gracefully and keeping your codebase clean and manageable.

Example

Here’s an example demonstrating the EAFP style in action:

Python
>>> try:
...     with open("example.txt", mode="r") as file:
...         content = file.read()
... except FileNotFoundError:
...     print("The file does not exist.")
...
The file does not exist.

In this example, you try to open example.txt and read from it. You don’t check whether the file exists. Instead, you stick to the EAFP style by catching the FileNotFoundError exception to handle the case of an inexistent file.

Tutorial

LBYL vs EAFP: Preventing or Handling Errors in Python

In this tutorial, you'll learn about two popular coding styles in Python: look before you leap (LBYL) and easier to ask forgiveness than permission (EAFP). You can use these styles to deal with errors and exceptional situations in your code. You'll dive into the LBYL vs EAFP discussion in Python.

intermediate best-practices python

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated Dec. 19, 2024 • Reviewed by Dan Bader