فصل چهارم: Context Manager، Type Hints و Dataclass

Type Hints برای کد ایمن‌تر و خواناتر

مشخص کردن نوع داده بدون از دست دادن انعطاف پایتون

پایتون یک زبان با نوع‌بندی پویا است، اما از نسخه‌ی ۳.۵ به بعد امکان افزودن type hints (راهنمای نوع) فراهم شده که به ابزارها و ویرایشگرها کمک می‌کند خطاها را پیش از اجرا تشخیص دهند، بدون این‌که نوع‌بندی پویای پایتون تغییر کند.

def add(a: int, b: int) -> int:
    return a + b

def greet(name: str, times: int = 1) -> str:
    return (f"سلام {name}! " * times).strip()

برای انواع پیچیده‌تر مانند لیست یا دیکشنری، از ماژول typing یا (از پایتون ۳.۹ به بعد) مستقیماً از خود انواع داخلی استفاده می‌شود:

from typing import Optional

def find_user(user_id: int, users: dict[int, str]) -> Optional[str]:
    return users.get(user_id)

def total_price(items: list[float]) -> float:
    return sum(items)

نکته‌ی مهم این است که type hints فقط یک راهنما هستند و پایتون به‌طور پیش‌فرض آن‌ها را در زمان اجرا بررسی نمی‌کند؛ برای بررسی واقعی باید از ابزارهایی مانند mypy استفاده کرد. با این حال، حتی بدون این ابزارها، type hints مستندسازی زنده‌ای برای کد شما فراهم می‌کنند و پیشنهادهای هوشمند ویرایشگر را دقیق‌تر می‌کنند؛ به همین دلیل در پروژه‌های تیمی حرفه‌ای تقریباً استاندارد شده‌اند.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.