TypeVar
- Python kursu
- İleri seviye
- Ders 11/83
- 5 dk
TypeVar ile generic fonksiyonları öğrenirsin.
TypeVar
Bazen bir fonksiyon, aldığı türü koruyarak dönmelidir. TypeVar, böyle bir tip değişkeni tanımlar.
from typing import TypeVar, List
T = TypeVar("T")
def first(items: List[T]) -> T:
return items[0]Burada T herhangi bir türü temsil eder. first([1, 2, 3]) çağrısı int döndürür; first(["a", "b"]) çağrısı str döndürür. Tür, argümanla birlikte korunur.
TypeVar'a bound vererek sınırlandırabilirsin: TypeVar("T", bound=int) yalnızca int alt türlerini kabul eder.
TypeVar ile güvenli ilk öğe
TypeVar kullanmadan first, Any döner gibi görünür; tür bilgisi kaybolur. TypeVar ile first([1, 2, 3])'ün int döndüğü bellidir.
Bu, IDE'nin tamamlama önerilerini doğru vermesini sağlar. Öğrenci first(["a", "b"]).upper() yazdığında IDE .upper() önerir çünkü dönecek türün str olduğunu bilir.
Birden çok TypeVar da tanımlanabilir: K = TypeVar("K"), V = TypeVar("V"). Bu, genel sözlük işlevlerinde işe yarar.
Uygulama TypeVar ile first fonksiyonu
T = TypeVar("T") tanımla. first(items: List[T]) -> T fonksiyonunu yaz; gövde return items[0] içersin. typing modülünden TypeVar ve List içe aktar. print(first([1, 2, 3])) çağrısını yap.
Başlangıç kodu
# typing modülünden TypeVar ve List içe aktar
# T adında bir tip değişkeni tanımla
# first(items: List[T]) -> T: listenin ilk öğesini döndür
# first([1, 2, 3]) çağrısının sonucunu yazdırÖrnek çözüm
from typing import TypeVar, List
T = TypeVar("T")
def first(items: List[T]) -> T:
return items[0]
print(first([1, 2, 3]))Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 TypeVar tanımla
from typing import TypeVar
T = ____("T")
def first(items):
return items[0]
from typing import TypeVar
T = TypeVar("T")
def first(items):
return items[0]
Açıklama: T = TypeVar("T") bir tip değişkeni tanımlar; herhangi bir türü temsil eder.
2 TypeVar kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
T = TypeVar("T") |
Tip değişkeni tanımı |
List[T] |
T listesi |
-> T |
T döndürür |
bound=int |
Sınır: int alt türleri |
3 TypeVar kullanmanın başlıca yararı nedir?
- Daha hızlı çalışma zamanı
- Daha az bellek tüketimi
- Tür bilgisinin korunması ve doğru IDE önerileri Doğru cevap
- Hataların otomatik düzeltilmesi
Açıklama: TypeVar tür bilgisini korur; mypy ve IDE daha doğru sonuç verir.