0Pricing
Python Academy · درس

أساسيات تعليقات الأنواع

أضف تعليقات للمتغيرات ومعاملات الدوال وأنواع القيم المُعادة

أساسيات تعليقات الأنواع درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

ما هي تعليقات الأنواع؟

تعليقات الأنواع هي تلميحات تصرّح بالنوع المتوقع للمتغيرات والمعاملات والقيم المعادة. ولا تُفرض في وقت التشغيل، بل تقرؤها مدققات الأنواع مثل mypy.

def greet(name: str) -> str:
    return f"Hello, {name}"

result: str = greet("Alice")
print(result)

تعليقات المتغيرات

ضع تعليقًا على المتغيرات على مستوى الوحدة أو الفئة أو النطاق المحلي باستخدام نقطتين تليهما النوع.

count: int = 0
pi: float = 3.14159
name: str = "Python"
flag: bool = True

# Annotation without assignment (declaration only)
future_value: int

تعليقات معاملات الدوال

ضع تعليقًا على كل معامل في توقيع الدالة. استخدم -> type لوضع تعليق على نوع القيمة المعادة.

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

def repeat(text: str, times: int = 1) -> str:
    return text * times

def no_return() -> None:
    print("side effect only")

أنواع المجموعات المضمنة (Python 3.9+)

بدءًا من Python 3.9+، استخدم الأنواع المضمنة المكتوبة بأحرف صغيرة مباشرةً باعتبارها أنواعًا عامة: list[int] وdict[str, int] وtuple[int, ...].

def total(numbers: list[int]) -> int:
    return sum(numbers)

def config() -> dict[str, str]:
    return {"host": "localhost", "port": "8080"}

def coords() -> tuple[float, float]:
    return (1.0, 2.0)

Optional وUnion

يعني X | None (في Python 3.10+) أو Optional[X] أن القيمة يمكن أن تكون X أو None. ويعني X | Y أن القيمة يمكن أن تكون X أو Y.

from typing import Optional

def find(items: list[int], target: int) -> int | None:
    return next((x for x in items if x == target), None)

# Older style:
# def find(...) -> Optional[int]:

أنواع Union

يضع int | str (في Python 3.10+) أو Union[int, str] تعليقًا على قيمة قد تكون من أحد أنواع متعددة.

from typing import Union

def process(value: int | str) -> str:
    return str(value)

# Older style:
# def process(value: Union[int, str]) -> str:

الأسماء المستعارة للأنواع

أسند تعبير نوع إلى اسم لإنشاء اسم مستعار قابل لإعادة الاستخدام، مما يحسن سهولة القراءة.

from typing import TypeAlias

Vector: TypeAlias = list[float]
Matrix: TypeAlias = list[Vector]

def dot(a: Vector, b: Vector) -> float:
    return sum(x * y for x, y in zip(a, b))

تعليقات Callable

استخدم Callable[[arg_types], return_type] لوضع تعليق على الدوال التي تمررها كوسائط.

from typing import Callable

def apply(func: Callable[[int, int], int], x: int, y: int) -> int:
    return func(x, y)

result = apply(lambda a, b: a + b, 3, 4)
print(result)  # 7

تعليقات *args و**kwargs

ضع تعليقًا على *args باستخدام نوع العناصر، وليس نوع الصف، وعلى **kwargs باستخدام نوع القيم.

def log(*messages: str, level: str = "INFO") -> None:
    for msg in messages:
        print(f"[{level}] {msg}")

def configure(**options: int) -> None:
    for key, val in options.items():
        print(f"{key}: {val}")

from __future__ import annotations

أضف عملية الاستيراد هذه في أعلى الملف لتمكين التقييم المؤجل لتعليقات الأنواع، مما يسمح بالمراجع الأمامية دون استخدام علامات اقتباس.

from __future__ import annotations

class Node:
    def __init__(self, value: int, next: Node | None = None):
        self.value = value
        self.next = next   # forward ref to Node works here

حارس TYPE_CHECKING

استورد الأنواع فقط أثناء التحقق من الأنواع، وليس في وقت التشغيل، لتجنب عمليات الاستيراد الدائرية أو عمليات الاستيراد الثقيلة.

from __future__ import annotations
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from mymodule import HeavyClass

def process(obj: HeavyClass) -> None:
    ...   # HeavyClass not imported at runtime

تحقق سريع

ما صيغة التعليق التي تحدد أن الدالة لا تعيد أي قيمة؟

مراجعة

ضع تعليقًا على المتغيرات باستخدام name: Type، وعلى المعاملات باستخدام param: Type، وعلى القيم المعادة باستخدام -> Type. استخدم list[T] وdict[K,V] (في Python 3.9+) وX | None (في 3.10+) وfrom __future__ import annotations للمراجع الأمامية.

الأسئلة الشائعة

هل درس «أساسيات تعليقات الأنواع» مجاني؟

نعم — نص درس «أساسيات تعليقات الأنواع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات تعليقات الأنواع»؟

أضف تعليقات للمتغيرات ومعاملات الدوال وأنواع القيم المُعادة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أساسيات تعليقات الأنواع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات تعليقات الأنواع
  2. الأنواع المعقدة: List وDict وOptional وUnion
  3. TypeVar والفئات العامة وProtocol
  4. تشغيل mypy وإصلاح أخطاء الأنواع
← العودة إلى Python Academy