python
4
总安装量
3
周安装量
#49049
全站排名
安装命令
npx skills add https://github.com/g1joshi/agent-skills --skill python
Agent 安装分布
trae
3
gemini-cli
3
antigravity
3
claude-code
3
codex
3
Skill 文档
Python
Modern Python development with type hints, async/await, and best practices.
When to Use
- Working with
.pyfiles - Building APIs with FastAPI/Django
- Data analysis with pandas/numpy
- Scripting and automation
Quick Start
from typing import Optional, List
def process_items(
items: list[str],
transform: Optional[callable] = None,
) -> list[str]:
if transform:
return [transform(item) for item in items]
return items
Core Concepts
Type Hints
from typing import TypeVar, Generic
from collections.abc import Callable, Iterator
def process_items(
items: list[str],
transform: Callable[[str], str] | None = None,
) -> list[str]:
if transform:
return [transform(item) for item in items]
return items
# Use TypeVar for generics
T = TypeVar('T')
def first(items: list[T]) -> T | None:
return items[0] if items else None
Dataclasses & Pydantic
from dataclasses import dataclass, field
from pydantic import BaseModel, Field
# Dataclass for simple data containers
@dataclass
class User:
name: str
email: str
tags: list[str] = field(default_factory=list)
# Pydantic for validation
class UserCreate(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
email: str = Field(..., pattern=r'^[\w\.-]+@[\w\.-]+\.\w+$')
Common Patterns
Async Patterns
import asyncio
async def fetch_all(urls: list[str]) -> list[Response]:
async with aiohttp.ClientSession() as session:
tasks = [fetch_one(session, url) for url in urls]
return await asyncio.gather(*tasks)
# Use TaskGroup for structured concurrency (3.11+)
async def process_batch(items: list[Item]) -> list[Result]:
results = []
async with asyncio.TaskGroup() as tg:
for item in items:
tg.create_task(process_item(item, results))
return results
Context Managers
from contextlib import contextmanager, asynccontextmanager
@contextmanager
def managed_resource() -> Iterator[Resource]:
resource = Resource()
try:
yield resource
finally:
resource.cleanup()
Best Practices
Do:
- Use type hints for function signatures
- Use
pyproject.tomlfor project configuration - Use virtual environments (
venv,poetry) - Use generators for large datasets
Don’t:
- Use mutable default arguments (
def f(x=[]) - Use
import *(pollutes namespace) - Catch bare
except:(catch specific exceptions) - Use
assertfor input validation
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
ModuleNotFoundError |
Package not installed | Run pip install package |
IndentationError |
Mixed tabs/spaces | Use consistent 4-space indentation |
TypeError: unhashable type |
Using list as dict key | Use tuple instead |