← スキル一覧に戻る

python-patterns
by eyadsibai
⭐ 0🍴 0📅 2026年1月15日
SKILL.md
name: Python Patterns description: This skill should be used when the user asks about "Python best practices", "Pythonic code", "Python patterns", "Python idioms", "type hints", "dataclasses", "async Python", "Python decorators", "context managers" version: 1.0.0
Python Patterns
Guidance for writing idiomatic, modern Python code.
Modern Python Features (3.9+)
| Feature | Purpose | Key Concept |
|---|---|---|
| Type hints | Static analysis | def func(x: str) -> int: |
| Dataclasses | Structured data | Auto __init__, __repr__, etc. |
| Context managers | Resource cleanup | with statement guarantees cleanup |
| Decorators | Cross-cutting concerns | Wrap functions to add behavior |
| Async/await | Concurrent I/O | Non-blocking operations |
Type Hints
Modern syntax (3.10+): Use | for unions, built-in types for generics.
| Old | Modern |
|---|---|
Optional[str] | str | None |
Union[str, int] | str | int |
List[str] | list[str] |
Dict[str, int] | dict[str, int] |
Key concept: Type hints are for tooling (mypy, IDEs) - no runtime enforcement.
Dataclasses vs Alternatives
| Use | For |
|---|---|
@dataclass | Mutable data with methods |
@dataclass(frozen=True) | Immutable, hashable |
NamedTuple | Lightweight, tuple semantics |
TypedDict | Dict with known keys |
Pydantic | Validation, serialization |
Context Managers
Use for any resource that needs cleanup: files, connections, locks, transactions.
Pattern: Acquire in __enter__, release in __exit__ (or use @contextmanager with yield)
Decorators
| Pattern | Use Case |
|---|---|
| Simple decorator | Logging, timing |
| Decorator with args | Configurable behavior |
| Class decorator | Modify class definition |
@functools.wraps | Preserve function metadata |
Async Python
When to use: I/O-bound operations (HTTP requests, DB queries, file I/O)
When NOT to use: CPU-bound operations (use multiprocessing instead)
| Concept | Purpose |
|---|---|
async def | Define coroutine |
await | Suspend until complete |
asyncio.gather() | Run multiple concurrently |
async with | Async context manager |
async for | Async iteration |
Pythonic Idioms
| Instead of | Use |
|---|---|
if len(x) > 0: | if x: |
for i in range(len(x)): | for item in x: or enumerate() |
d.has_key(k) | k in d |
try/if exists (LBYL) | try/except (EAFP) |
| Manual swap | a, b = b, a |
Project Structure
my_project/
├── src/my_package/ # Source code
├── tests/ # Test files
├── pyproject.toml # Project config
└── README.md
Key concept: Use src/ layout to prevent import confusion.
Tooling
| Tool | Purpose |
|---|---|
| ruff | Fast linter + formatter |
| mypy | Type checking |
| pytest | Testing |
| uv/pip | Dependencies |
Resources
- Python docs: https://docs.python.org/3/
- Real Python: https://realpython.com/
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です