Python coding best practices. Use when writing or reviewing Python code. Covers type hints, error handling, and common patterns.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add Taoidle/plan-cascade --skill python --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Python?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/taoidle-python)More formats (shields.io, HTML) on the badges page.
---
name: python-best-practices
description: Python coding best practices. Use when writing or reviewing Python code. Covers type hints, error handling, and common patterns.
license: MIT
metadata:
author: plan-cascade
version: "1.0.0"
---
# Python Best Practices
## Code Style
| Rule | Guideline |
|------|-----------|
| Formatter | `ruff format` or `black` |
| Linter | `ruff check` with strict rules |
| Type hints | Always for public APIs |
| Docstrings | Google or NumPy style |
## Type Hints
```python
def process(items: list[str], max_count: int = 10) -> dict[str, int]: ...
def find_user(user_id: int) -> User | None: ...
```
## Error Handling
| Rule | Guideline |
|------|-----------|
| Specific exceptions | Never bare `except:` |
| Context managers | Use `with` for resources |
| Early return | Validate inputs, fail fast |
```python
# Good
try:
result = process(data)
except ValidationError as e:
logger.warning(f"Validation failed: {e}")
return default
```
## Project Structure
```
src/package_name/
├── __init__.py
├── core/
└── py.typed
tests/
├── conftest.py
└── test_*.py
pyproject.toml
```
## Common Patterns
| Pattern | Usage |
|---------|-------|
| `@dataclass` | Data containers |
| `@property` | Computed attributes |
| Generators | Memory-efficient iteration |
| `functools.cache` | Memoization |
## Anti-Patterns
| Avoid | Use Instead |
|-------|-------------|
| Mutable default args | `None` default, create inside |
| `import *` | Explicit imports |
| Global state | Dependency injection |
```python
# Bad: def add(item, items=[]): ...
# Good:
def add(item, items=None):
items = items or []
items.append(item)
return items
```
## Tools
| Tool | Purpose |
|------|---------|
| `pytest` | Testing |
| `ruff` | Linting + formatting |
| `mypy` | Type checking |
| `uv` | Dependencies |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!