Tür optimizasyonları (type hints), değişkenlerin, argümanların ve fonksiyonların döndürdüğü değerlerin beklenen tiplerini açıkça belirtmenin bir yoludur. Söz dizimi Python 3.5 ile ortaya çıktı (PEP 484). Anlamalar statiktir — yorumlayıcı bunları çalıştırma sırasında görmezden gelir, bunlar kod analiz araçları (mypy, Pyright, IDE) için tasarlanmıştır.
Tür optimizasyonları şunlara yardımcı olur:
Örnek:
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
Sık Sorulan Soru:
Tür optimizasyonları programın performansını veya çalışmanın doğruluğunu herhangi bir şekilde etkileyebilir mi?
Cevap: Hayır, tür optimizasyonları hem performansı hem de programın çalışmasını runtime'da etkilemez. Bunlar sadece meta verilerdir. Ancak, bunlar üçüncü taraf araçlar veya çerçeveler tarafından tür kontrolü ve doğrulaması için kullanılabilir (örneğin, FastAPI'de).
Hikaye
Projede büyük dinamik yapılar, elemanları belirtmeden list, dict ile türlendirilmiştir (örneğin: def f(x: list): ...). Bu nedenle, statik analizörler tür hatalarını belirleyemedi çünkü anotasyonlar içinde ne olduğunu anlamak mümkün değildi.
Hikaye
Python 3.7'de gecikmeli değerlendirmenin desteklenmesi için from __future__ import annotations kullandık, ancak projede bir kısımda bunu unuttuk. Bu, ileri referansların statik analizde hata vermesine ve bazı çerçeveleri kullanırken runtime'da hatalara yol açtı.
Hikaye
Büyük bir projede, dönüş değerinin tipe hatalı bir şekilde ayarlandı: Optional'ı içe aktarmayı unuttular, bu da mypy'den bir hata alınmasına ve IDE'de otomatik tamamlama ve hata vurgulama sorunlarına neden oldu.