JET School

Annotasiya nədir?

Annotasiya, Python proqramlaşdırma dilində dəyişənlərə, funksiya parametrlərinə və geri dönüş (return) dəyərlərinə əlavə məlumat (metaməlumat) əlavə etməyə imkan verir. Bu anlayış ilk dəfə PEP 3107 sənədində təqdim olunmuş, daha sonra PEP 484 ilə genişləndirilmişdir.

Python dinamik tipləmə dilidir, yəni dəyişənlərin tipi kod işləyərkən müəyyən olunur. Amma annotasiyalar vasitəsilə proqramçı gözlənilən verilən tipini açıq şəkildə göstərə bilər. Annotasiyalar kodun icrasına təsir etməz, yəni onlar yalnız informasiya xarakterlidirstatik analiz, IDE-lərin intellektual təklifləri, və daha oxunaqlı kod üçün istifadə olunur.

Sadə İstifadə Nümunəsi


def salamla(ad: str) -> str:

return f"Salam, {ad}!"

  • ad: str göstərir ki, ad parametrindən str (sətir) tipi gözlənilir.
  • -> str funksiyanın str tipində dəyər qaytaracağını bildirir.

Dəyişənlərdə Annotasiya


yas: int = 25

pi: float = 3.14

aktivdir: bool = True

Bu formada yazılmış annotasiyalar IDE-lərə və statik analiz alətlərinə kömək edir, baxmayaraq ki, kod icra olunarkən bu tiplər yoxlanılmır.

Annotasiyanın Faydaları

  1. Kodun daha oxunaqlı və anlaşılan olması
  2. IDE-lərdə avtomatik tamamlanma və səhv aşkarlama imkanlarının artması
  3. Statik analiz və tip yoxlaması (mypy, pylint və s.)
  4. Komanda ilə işləyərkən kommunikasiya və sənədləşmənin yaxşılaşması
  5. Böyük layihələrdə dəyişikliklərin təhlükəsiz aparılması

Qabaqcıl Nümunələr

List, Dict, Optional kimi strukturların istifadəsi (typing modulundan):


from typing import List, Dict, Optional


def telebeleri_al(sinif: Dict[str, List[str]]) -> Optional[List[str]]:

return sinif.get("telebeler")

  • Dict[str, List[str]] — açarları str, dəyərləri isə str siyahısı olan lüğətdir.
  • Optional[List[str]] — ya List[str], ya da None qaytarıla bilər deməkdir.

Klass və metod annotasiyaları

class Daire:

def __init__(self, radius: float) -> None:

self.radius: float = radius


def sahesi(self) -> float:

return 3.14159 * self.radius ** 2

Annotasiyalara Baxmaq

Python-da annotasiyalar __annotations__ atributunda saxlanılır:


def topla(a: int, b: int) -> int:

return a + b


print(topla.__annotations__)

# Çıxış: {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}

Qeyd

Python 3.9 və sonrakı versiyalarda list, dict kimi daxili tip strukturlar typing moduluna ehtiyac olmadan annotasiya üçün istifadə edilə bilər:

def topla(reqemler: list[int]) -> int:

return sum(reqemler)

Nəticə

  • Annotasiya Python-da dəyişənlər və funksiyalar üçün tip göstəriciləri əlavə etməyə imkan verir.
  • Onlar kodun icrasına təsir etməz, amma oxunurluğu və analiz imkanlarını artırır.
  • Böyük və uzunmüddətli layihələrdə kodun saxlanmasını və genişləndirilməsini asanlaşdırır.

IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!