python
46
总安装量
46
周安装量
#4634
全站排名
安装命令
npx skills add https://github.com/pproenca/dot-skills --skill python
Agent 安装分布
claude-code
40
opencode
35
gemini-cli
35
codex
34
cursor
30
Skill 文档
Python 3.11 Best Practices
Comprehensive performance optimization guide for Python 3.11+ applications. Contains 42 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Writing new Python async I/O code
- Choosing data structures for collections
- Optimizing memory usage in data-intensive applications
- Implementing concurrent or parallel processing
- Reviewing Python code for performance issues
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | I/O & Async Patterns | CRITICAL | io- |
| 2 | Data Structure Selection | CRITICAL | ds- |
| 3 | Memory Optimization | HIGH | mem- |
| 4 | Concurrency & Parallelism | HIGH | conc- |
| 5 | Loop & Iteration | MEDIUM | loop- |
| 6 | String Operations | MEDIUM | str- |
| 7 | Function & Call Overhead | LOW-MEDIUM | func- |
| 8 | Python Idioms & Micro | LOW | py- |
Table of Contents
-
I/O & Async Patterns â CRITICAL
- 1.1 Defer await Until Value Needed â CRITICAL (2-5Ã faster for dependent operations)
- 1.2 Use aiofiles for Async File Operations â CRITICAL (prevents event loop blocking)
- 1.3 Use asyncio.gather() for Concurrent I/O â CRITICAL (2-10Ã throughput improvement)
- 1.4 Use Connection Pooling for Database Access â CRITICAL (100-200ms saved per connection)
- 1.5 Use Semaphores to Limit Concurrent Operations â CRITICAL (prevents resource exhaustion)
- 1.6 Use uvloop for Faster Event Loop â CRITICAL (2-4Ã faster async I/O)
-
Data Structure Selection â CRITICAL
- 2.1 Use bisect for O(log n) Sorted List Operations â CRITICAL (O(n) to O(log n) search)
- 2.2 Use defaultdict to Avoid Key Existence Checks â CRITICAL (eliminates redundant lookups)
- 2.3 Use deque for O(1) Queue Operations â CRITICAL (O(n) to O(1) for popleft)
- 2.4 Use Dict for O(1) Key-Value Lookup â CRITICAL (O(n) to O(1) lookup)
- 2.5 Use frozenset for Hashable Set Keys â CRITICAL (enables set-of-sets patterns)
- 2.6 Use Set for O(1) Membership Testing â CRITICAL (O(n) to O(1) lookup)
-
Memory Optimization â HIGH
- 3.1 Intern Repeated Strings to Save Memory â HIGH (reduces duplicate string storage)
- 3.2 Use slots for Memory-Efficient Classes â HIGH (20-50% memory reduction per instance)
- 3.3 Use array.array for Homogeneous Numeric Data â HIGH (4-8Ã memory reduction for numbers)
- 3.4 Use Generators for Large Sequences â HIGH (100-1000Ã memory reduction)
- 3.5 Use weakref for Caches to Prevent Memory Leaks â HIGH (prevents unbounded cache growth)
-
Concurrency & Parallelism â HIGH
- 4.1 Use asyncio for I/O-Bound Concurrency â HIGH (300% throughput improvement for I/O)
- 4.2 Use multiprocessing for CPU-Bound Parallelism â HIGH (4-8Ã speedup on multi-core systems)
- 4.3 Use Queue for Thread-Safe Communication â HIGH (prevents race conditions)
- 4.4 Use TaskGroup for Structured Concurrency â HIGH (prevents resource leaks on failure)
- 4.5 Use ThreadPoolExecutor for Blocking Calls in Async â HIGH (prevents event loop blocking)
-
Loop & Iteration â MEDIUM
- 5.1 Hoist Loop-Invariant Computations â MEDIUM (avoids NÃ redundant work)
- 5.2 Use any() and all() for Boolean Aggregation â MEDIUM (O(n) to O(1) best case)
- 5.3 Use dict.items() for Key-Value Iteration â MEDIUM (single lookup vs double lookup)
- 5.4 Use enumerate() for Index-Value Iteration â MEDIUM (cleaner code, avoids index errors)
- 5.5 Use itertools for Efficient Iteration Patterns â MEDIUM (2-3Ã faster iteration patterns)
- 5.6 Use List Comprehensions Over Explicit Loops â MEDIUM (2-3Ã faster iteration)
-
String Operations â MEDIUM
- 6.1 Use f-strings for Simple String Formatting â MEDIUM (20-30% faster than .format())
- 6.2 Use join() for Multiple String Concatenation â MEDIUM (4Ã faster for 5+ strings)
- 6.3 Use str.startswith() with Tuple for Multiple Prefixes â MEDIUM (single call vs multiple comparisons)
- 6.4 Use str.translate() for Character-Level Replacements â MEDIUM (10Ã faster than chained replace())
-
Function & Call Overhead â LOW-MEDIUM
- 7.1 Reduce Function Calls in Tight Loops â LOW-MEDIUM (100ms savings per 1M iterations)
- 7.2 Use functools.partial for Pre-Filled Arguments â LOW-MEDIUM (50% faster debugging via introspection)
- 7.3 Use Keyword-Only Arguments for API Clarity â LOW-MEDIUM (prevents positional argument errors)
- 7.4 Use lru_cache for Expensive Function Memoization â LOW-MEDIUM (avoids repeated computation)
-
Python Idioms & Micro â LOW
- 8.1 Leverage Zero-Cost Exception Handling â LOW (zero overhead in happy path (Python 3.11+))
- 8.2 Prefer Local Variables Over Global Lookups â LOW (faster name resolution)
- 8.3 Use dataclass for Data-Holding Classes â LOW (reduces boilerplate by 80%)
- 8.4 Use Lazy Imports for Faster Startup â LOW (10-15% faster startup)
- 8.5 Use match Statement for Structural Pattern Matching â LOW (reduces branch complexity)
- 8.6 Use Walrus Operator for Assignment in Expressions â LOW (eliminates redundant computations)