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 xarakterlidir və statik 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ı
- Kodun daha oxunaqlı və anlaşılan olması
- IDE-lərdə avtomatik tamamlanma və səhv aşkarlama imkanlarının artması
- Statik analiz və tip yoxlaması (mypy, pylint və s.)
- Komanda ilə işləyərkən kommunikasiya və sənədləşmənin yaxşılaşması
- 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.
Teqlər:
Əlaqəli terminlə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!