Clean, readable code is easier to write, debug, and maintain. Python encourages code readability through its official style guide: PEP 8 (Python Enhancement Proposal 8). Following PEP 8 ensures that your code is consistent, professional, and collaborative.
This guide introduces the most important PEP 8 rules and best practices to help you write Python code that is both elegant and understandable.
1. Why Follow PEP 8?
- Improves readability and consistency
- Makes code easier to debug and test
- Ensures smoother collaboration on teams
- Helps tools like linters and formatters catch errors easily
2. Indentation and Spacing
Use 4 Spaces per Indentation Level
# Correct
def greet():
print("Hello, World!")
# Incorrect
def greet():
print("Hello, World!") # Only 2 spaces
Avoid Extra Spaces Inside Brackets or Around Operators
# Correct
my_list = [1, 2, 3]
total = a + b
# Incorrect
my_list = [ 1, 2, 3 ]
total = a+b
3. Line Length
Limit lines to 79 characters for better readability on all screens.
# Correct
message = "This is a message that fits within the recommended width."
# Long lines should be wrapped using parentheses
data = (
"This is a long string that should be split into multiple lines "
"for better readability according to PEP 8 standards."
)
4. Naming Conventions
Type | Convention | Example |
---|---|---|
Variables | lowercase_with_underscores | user_name |
Functions | lowercase_with_underscores | calculate_total() |
Constants | ALL_CAPS | PI = 3.14 |
Classes | CamelCase | MyClass |
5. Imports
- Imports should be on separate lines
- Group imports: standard libraries, third-party packages, local modules
# Correct
import os
import sys
# Correct grouping
import datetime # standard library
import requests # third-party
import mymodule # local module
6. Blank Lines
- Use two blank lines between top-level functions or class definitions
- Use one blank line inside functions to separate logic
def greet():
print("Hi")
def farewell():
print("Bye")
7. Comments and Docstrings
Use comments to explain "why" something is done. For functions and classes, use triple-quoted docstrings to describe their purpose.
# This function greets the user
def greet(name):
"""Return a greeting message with the user's name."""
return f"Hello, {name}!"
8. Avoid Writing Compound Statements
Don’t write multiple statements on one line.
# Bad
if x > 0: print("Positive")
# Good
if x > 0:
print("Positive")
9. Keep Code DRY (Don’t Repeat Yourself)
Use functions to avoid repeating logic.
# Repetitive
print("Welcome, John!")
print("Welcome, Alice!")
# Better
def welcome(name):
print(f"Welcome, {name}!")
welcome("John")
welcome("Alice")
10. Use Meaningful Variable Names
Names should be descriptive enough to understand their purpose without needing comments.
# Bad
a = 5
b = 10
# Good
num_apples = 5
num_oranges = 10
11. Use Tools to Help You
- Black: Auto-formats code using PEP 8
- flake8: Checks for PEP 8 violations
- pylint: Linter for checking code quality
12. Summary
- Use 4 spaces for indentation
- Limit line length to 79 characters
- Follow naming conventions
- Write clear comments and docstrings
- Use blank lines for logical separation
- Avoid unnecessary complexity
- Stick to consistent import order and structure
13. Final Thoughts
Writing clean code is not just about pleasing linters—it's about making your code easy to read, understand, and maintain. By following the PEP 8 style guide, you’re not just writing Python code—you’re writing Pythonic code that other developers will appreciate and trust.