Python Patterns

v2026.09.24

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"

GitHub
安装命令
npx skhub add eyadsibai/python-patterns
Markdown
SKILL.md

Python Patterns

Guidance for writing idiomatic, modern Python code.

Modern Python Features (3.9+)

FeaturePurposeKey Concept
Type hintsStatic analysisdef func(x: str) -> int:
DataclassesStructured dataAuto __init__, __repr__, etc.
Context managersResource cleanupwith statement guarantees cleanup
DecoratorsCross-cutting concernsWrap functions to add behavior
Async/awaitConcurrent I/ONon-blocking operations

Type Hints

Modern syntax (3.10+): Use | for unions, built-in types for generics.

OldModern
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

UseFor
@dataclassMutable data with methods
@dataclass(frozen=True)Immutable, hashable
NamedTupleLightweight, tuple semantics
TypedDictDict with known keys
PydanticValidation, 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

PatternUse Case
Simple decoratorLogging, timing
Decorator with argsConfigurable behavior
Class decoratorModify class definition
@functools.wrapsPreserve 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)

ConceptPurpose
async defDefine coroutine
awaitSuspend until complete
asyncio.gather()Run multiple concurrently
async withAsync context manager
async forAsync iteration

Pythonic Idioms

Instead ofUse
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 swapa, 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

ToolPurpose
ruffFast linter + formatter
mypyType checking
pytestTesting
uv/pipDependencies

Resources

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

未指定

源路径

plugins/ltk-engineering/skills/python/python-patterns

默认分支

master

最新提交

f8e8569

Tree SHA

8bcd589