40 lines
956 B
Markdown
40 lines
956 B
Markdown
---
|
||
paths:
|
||
- "**/*.py"
|
||
- "**/*.pyi"
|
||
---
|
||
# Python 模式 (Patterns)
|
||
|
||
> 本檔案擴展了 [common/patterns.md](../common/patterns.md),包含 Python 特定內容。
|
||
|
||
## 協定 (Protocol / 鴨子型別)
|
||
|
||
```python
|
||
from typing import Protocol
|
||
|
||
class Repository(Protocol):
|
||
def find_by_id(self, id: str) -> dict | None: ...
|
||
def save(self, entity: dict) -> dict: ...
|
||
```
|
||
|
||
## 使用 Dataclasses 作為 DTO (資料傳輸物件)
|
||
|
||
```python
|
||
from dataclasses import dataclass
|
||
|
||
@dataclass
|
||
class CreateUserRequest:
|
||
name: str
|
||
email: str
|
||
age: int | None = None
|
||
```
|
||
|
||
## 上下文管理器 (Context Managers) 與 生成器 (Generators)
|
||
|
||
- 使用上下文管理器 (`with` 語句) 進行資源管理。
|
||
- 使用生成器進行延遲求值與具備記憶體效率的迭代。
|
||
|
||
## 參考資源
|
||
|
||
參見技能 (Skill):`python-patterns`,獲取包含裝飾器 (Decorators)、併發 (Concurrency) 與包組織 (Package organization) 的全面模式。
|