CodeBlanks Logo Icon CodeBlanks

TypeVar

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

main.py
# 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

main.py
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

Soru
from typing import TypeVar

T = ____("T")

def first(items):
    return items[0]
Cevap
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.

İleri seviye bölümündeki tüm dersler