python

📁 g1joshi/agent-skills 📅 3 days ago
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 .py files
  • 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.toml for 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 assert for 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

References