Python Best Practices & Optimization
Write professional-grade Python code with PEP8, optimization tricks, and environment management!
1. PEP8: Python Style Guide
PEP8 is Python’s official style guide for readable, consistent code.
Key Rules
Category | Guideline | Example |
---|---|---|
Indentation | 4 spaces per level (no tabs) | ✅ def func(): |
Line Length | Max 79 chars (72 for docstrings/comments) | ❌ Avoid super-long lines |
Naming | snake_case for variables/functions PascalCase for classes |
user_id, DatabaseConnection |
Imports | Group in this order: 1. Standard library 2. Third-party 3. Local |
import os |
Whitespace | Surround operators with spaces | ✅ x = 5 + 3 ❌ x=5+3 |
Tools:
flake8
: Check PEP8 compliance (pip install flake8
).Autopep8
: Auto-format code (pip install autopep8
).
2. Code Optimization
Readability vs. Performance: Prioritize readability first, optimize only when necessary.
Optimization Techniques
Technique | Example | Why It Matters |
---|---|---|
Use Built-in Functions | sum() vs manual loops |
Faster (C-implemented) |
Avoid Global Variables | Use local vars or class attributes | Global lookups are slower |
List Comprehensions | [x*2 for x in range(10)] |
Concise and faster than loops |
Generator Expressions | (x*2 for x in range(10)) |
Memory-efficient for large data |
Memoization | @lru_cache for recursive functions |
Avoid redundant calculations |
Vectorization with NumPy | Replace loops with array operations | Leverage optimized C code |
Example: Optimizing a Loop
# Slow
result = []
for i in range(10000):
result.append(i * 2)
# Faster
result = [i * 2 for i in range(10000)]
# Fastest (NumPy)
import numpy as np
result = np.arange(10000) * 2
3. Virtual Environments
Isolate project dependencies to avoid conflicts.
Using venv (Built-in)
# Create environment
python -m venv myenv
# Activate (Linux/Mac)
source myenv/bin/activate
# Activate (Windows)
myenv\Scripts\activate
# Install packages
pip install requests
# Deactivate
deactivate
Using virtualenv (Third-Party)
pip install virtualenv
virtualenv myenv
# Activation same as venv
Comparison
Tool | Pros | Cons |
---|---|---|
venv | Built-in, no setup | Limited customization |
virtualenv | Faster, more features | Requires installation |
4. Common Mistakes & Fixes
Mistake | Fix |
---|---|
Not using venv | Always isolate project dependencies. |
Ignoring PEP8 | Use linters/formatters (flake8, Black). |
Premature optimization | Profile first (cProfile), optimize hotspots. |
Circular imports | Restructure code or use local imports. |
Best Practices
Write Docstrings:
def calculate_sum(numbers):
"""Return the sum of a list of numbers.
Args:
numbers (list): List of integers/floats.
"""
return sum(numbers)
Use Type Hints:
from typing import List
def greet_all(names: List[str]) -> None:
for name in names:
print(f"Hello, {name}!")
Automate Testing:
- Write unit tests with pytest.
- Use GitHub Actions for CI/CD.
Profile Code:
python -m cProfile my_script.py
Cheat Sheet
PEP8 Quick Reference
- Variables:
lowercase_with_underscores
- Constants:
UPPERCASE_WITH_UNDERSCORES
- Classes:
PascalCase
- Avoid:
l, O, I
as single-letter names.
Virtual Env Commands
# Export dependencies
pip freeze > requirements.txt
# Install from requirements
pip install -r requirements.txt
Key Takeaways
- ✅ PEP8: Write clean, consistent code.
- ✅ Optimize wisely: Prioritize readability, profile before optimizing.
- ✅ Virtual environments: Avoid dependency conflicts.
What’s Next?
- Explore dependency management with poetry.
- Learn async programming for I/O-bound tasks.
- Master debugging tools like pdb++ or IDE debuggers.
Tags:
python