python

Python Core Knowledge

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "python" with this command: npx skills add claude-dev-suite/claude-dev-suite/claude-dev-suite-claude-dev-suite-python

Python Core Knowledge

Full Reference: See advanced.md for production patterns: Result types, custom exceptions, structured logging, Pydantic validation, testing patterns, performance optimization, and dependency injection.

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: python for comprehensive documentation.

Python Version Support

Version Status Key Features

3.14 Current Type defaults, JIT improvements

3.13 Stable Free-threading (experimental), JIT

3.12 Stable PEP 695 type syntax, f-string improvements

3.11 Stable Exception groups, 10-60% faster

3.10 Security Pattern matching, | union

Type Hints (Modern Syntax)

Python 3.10+ - Use | instead of Union

def greet(name: str | None = None) -> str: return f"Hello, {name or 'World'}"

Python 3.9+ - Use built-in generics

def process(items: list[str]) -> dict[str, int]: return {item: len(item) for item in items}

Python 3.12+ - PEP 695 Type Parameter Syntax

def first[T](items: list[T]) -> T | None: return items[0] if items else None

class Stack[T]: def init(self) -> None: self._items: list[T] = []

def push(self, item: T) -> None:
    self._items.append(item)

def pop(self) -> T:
    return self._items.pop()

Type aliases (Python 3.12+)

type Point = tuple[float, float] type Vector[T] = list[T] type Handler[T] = Callable[[T], None]

Callable

def apply(fn: Callable[[int], int], value: int) -> int: return fn(value)

Dataclasses

from dataclasses import dataclass, field from datetime import datetime

@dataclass class User: id: int name: str email: str created_at: datetime = field(default_factory=datetime.now) is_active: bool = True

def __post_init__(self):
    self.email = self.email.lower()

Frozen (immutable)

@dataclass(frozen=True) class Point: x: float y: float

Slots for memory efficiency (Python 3.10+)

@dataclass(slots=True) class Optimized: value: int

Async/Await

import asyncio import aiohttp

async def fetch_user(id: int) -> dict: async with aiohttp.ClientSession() as session: async with session.get(f'/api/users/{id}') as response: return await response.json()

async def fetch_all_users(ids: List[int]) -> List[dict]: tasks = [fetch_user(id) for id in ids] return await asyncio.gather(*tasks)

Run

asyncio.run(fetch_all_users([1, 2, 3]))

Context Managers

from contextlib import contextmanager, asynccontextmanager

@contextmanager def timer(): start = time.time() yield print(f"Elapsed: {time.time() - start:.2f}s")

with timer(): process_data()

@asynccontextmanager async def get_db(): db = await create_connection() try: yield db finally: await db.close()

Modern Patterns

Match (3.10+)

match status: case "active": handle_active() case "inactive" | "pending": handle_pending() case {"type": "user", "name": name}: # Dict pattern handle_user(name) case [first, *rest]: # Sequence pattern handle_sequence(first, rest) case _: handle_default()

Walrus operator

if (n := len(items)) > 10: print(f"Too many: {n}")

Exception groups (3.11+)

try: async with asyncio.TaskGroup() as tg: tg.create_task(task1()) tg.create_task(task2()) except* ValueError as eg: for exc in eg.exceptions: print(f"ValueError: {exc}") except* TypeError as eg: for exc in eg.exceptions: print(f"TypeError: {exc}")

Static Analysis & Linting

Official Rules References

Tool Rules Count Documentation

Ruff 800+ https://docs.astral.sh/ruff/rules/

SonarPython 300+ https://rules.sonarsource.com/python/

Pylint 200+ https://pylint.readthedocs.io/en/latest/user_guide/messages/messages_overview.html

Mypy Type checker https://mypy.readthedocs.io/en/stable/error_codes.html

Style Guides

Guide Link

PEP 8 https://peps.python.org/pep-0008/

PEP 20 (Zen) https://peps.python.org/pep-0020/

Google Python Style https://google.github.io/styleguide/pyguide.html

Ruff Configuration

pyproject.toml

[tool.ruff] line-length = 88 target-version = "py312"

[tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "S", # flake8-bandit (security) ] ignore = ["E501"] # line too long (handled by formatter)

[tool.ruff.lint.per-file-ignores] "tests/*" = ["S101"] # allow assert in tests

Full configuration guide: See python-quality skill

Key Rules Categories

Category Rule Example Tool

Security Hardcoded passwords Ruff S105, SonarPython S2068

Bug Mutable default arg Ruff B006

Type Safety Missing return type Mypy

Style Unused imports Ruff F401

Complexity Too complex Ruff C901

When NOT to Use This Skill

Scenario Use Instead

FastAPI-specific features backend-fastapi skill

Django framework Django-specific skill

Testing frameworks testing-pytest skill

Data science/ML Data science skills

SQLAlchemy ORM orm-sqlalchemy skill

Anti-Patterns

Anti-Pattern Why It's Bad Correct Approach

Mutable default arguments Shared state across calls Use None, create in function

Bare except: clauses Catches system exits Catch specific exceptions

Using eval() or exec()

Security risk, code injection Use safer alternatives

Not using context managers Resource leaks Use with statement

Global variables everywhere Hard to test, maintain Pass as parameters

Mixing sync and async code Deadlocks, blocking Use proper async patterns

Not using type hints Hard to maintain Add type annotations

String concatenation in loops O(n²) complexity Use join() or f-strings

Quick Troubleshooting

Issue Cause Solution

"NameError: name 'X' is not defined" Variable not declared Check spelling, imports

"AttributeError: object has no attribute" Wrong type or missing attr Check type, use hasattr()

"TypeError: X() takes N positional arguments" Wrong arg count Check function signature

"ModuleNotFoundError: No module named" Missing dependency Install with pip

"IndentationError" Mixed tabs/spaces Use consistent indentation

"RuntimeError: Event loop is closed" Async misuse Use asyncio.run() properly

"RecursionError: maximum recursion depth" Infinite recursion Add base case, use iteration

Memory leak with async Tasks not awaited Await all tasks or use gather

Reference Documentation

  • Typing - Type hints, generics, PEP 695

  • Async - asyncio, TaskGroup, patterns

  • CLI - Typer, Click, Rich

  • Packaging - uv, poetry, pyproject.toml

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

joinquant

聚宽量化交易平台 - 提供A股、期货、基金数据查询,事件驱动策略回测,支持在线研究与模拟实盘。

Registry SourceRecently Updated
061
Profile unavailable
Coding

错敏信息检测

基于FastAPI的文本错敏信息检测服务,识别敏感词、错别字及规范表述问题,提供RESTful API接口调用。

Registry SourceRecently Updated
0177
Profile unavailable
Coding

Scrapling Fetch

支持自动绕过 Cloudflare Turnstile 和微信公众号反爬机制的网页内容抓取工具,输出干净Markdown或纯文本。

Registry SourceRecently Updated
0157
Profile unavailable