0Pricing
Python Academy · Ders

Karmaşık Türler: List, Dict, Optional, Union

typing modülünün genel türlerini ve Optional/Union'ı doğru biçimde kullanın.

Karmaşık Türler: List, Dict, Optional, Union, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

typing Modülüne Genel Bakış

Python 3.9'dan önce List, Dict ve Tuple gibi genel türler typing modülünden gelirdi. 3.9'dan itibaren yerleşik türleri doğrudan kullanabilirsiniz.

from typing import List, Dict, Tuple, Optional, Union

# Python 3.9+: use list[int], dict[str,int] directly
# Python 3.8-: use typing.List[int], typing.Dict[str,int]

List ve Sequence

Değiştirilebilir diziler için list[T], listelerin, demetlerin ve dizelerin kabul edildiği herhangi bir sıralı dizi için Sequence[T] kullanın.

from typing import Sequence

def total(nums: list[int]) -> int:
    return sum(nums)

def first(items: Sequence[str]) -> str:
    return items[0]   # works with list, tuple, str

Dict ve Mapping

Değiştirilebilir sözlükler için dict[K,V], salt okunur sözlük benzeri nesneler için Mapping[K,V] kullanın.

from typing import Mapping

def lookup(data: Mapping[str, int], key: str) -> int | None:
    return data.get(key)

result = lookup({"a": 1, "b": 2}, "a")
print(result)   # 1

Tuple Açıklamaları

Sabit uzunluk: tuple[int, str, float]. Değişken uzunluk: tuple[int, ...].

def point() -> tuple[float, float]:
    return (1.0, 2.0)

def first_n(n: int) -> tuple[int, ...]:
    return tuple(range(n))

# Named tuple with types:
from typing import NamedTuple
class Point(NamedTuple):
    x: float
    y: float

Optional[T]

Optional[T], T | None ifadesinin kısa biçimidir. Bir parametrenin bulunmayabileceği durumlarda her zaman doğru seçimdir.

from typing import Optional

def find_user(user_id: int) -> Optional[dict[str, str]]:
    db: dict[int, dict[str, str]] = {
        1: {"name": "Alice"}
    }
    return db.get(user_id)

Birleşim Türleri

Birkaç türden biri olabilecek değerler için Union[X, Y] veya X | Y (Python 3.10 ve sonrası) kullanın.

from typing import Union

def stringify(value: Union[int, float, str]) -> str:
    return str(value)

# Python 3.10+:
def stringify2(value: int | float | str) -> str:
    return str(value)

Literal Türleri

Literal["a","b","c"], bir değeri belirli bir sabit değerler kümesiyle sınırlar.

from typing import Literal

Mode = Literal["read", "write", "append"]

def open_file(path: str, mode: Mode) -> None:
    with open(path, mode):
        pass

open_file("data.txt", "read")    # ok
# open_file("data.txt", "exec")  # mypy error

TypedDict

TypedDict, her anahtarın belirli bir türe karşılık geldiği sözlük yapılarını açıklar.

from typing import TypedDict

class User(TypedDict):
    name: str
    age: int
    email: str | None

def greet(user: User) -> str:
    return f"Hello, {user['name']}"

alice: User = {"name": "Alice", "age": 30, "email": None}

Set ve FrozenSet

Kümeleri set[T], dondurulmuş kümeleri ise frozenset[T] ile açıklayın.

def unique(items: list[int]) -> set[int]:
    return set(items)

def allowed_methods() -> frozenset[str]:
    return frozenset({"GET", "POST", "DELETE"})

Iterable ve Iterator

Üzerinde döngü kurabildiğiniz her nesne için Iterable[T], __next__ içeren nesneler için Iterator[T] kullanın.

from typing import Iterable, Iterator

def evens(numbers: Iterable[int]) -> Iterator[int]:
    return (n for n in numbers if n % 2 == 0)

for n in evens([1, 2, 3, 4, 5]):
    print(n)   # 2 4

Any ve NoReturn

Any, bir değer için tür denetimini devre dışı bırakır. NoReturn, hiç dönmeyen işlevleri belirtir; bu işlevler her zaman bir hata yükseltir veya sonsuz döngüye girer.

from typing import Any, NoReturn

def accept_all(x: Any) -> None:
    print(x)

def crash(msg: str) -> NoReturn:
    raise RuntimeError(msg)   # never returns normally

Hızlı Kontrol

Optional[str] ne anlama gelir?

Özet

Koleksiyonlar için list[T], dict[K,V] ve tuple[T,...] kullanın. Optional[T] = T | None. Birden fazla tür için Union[X,Y] veya X|Y kullanın. Belirli değerler için Literal, türü belirtilmiş sözlük yapıları için TypedDict, tür denetimini devre dışı bırakmak için Any kullanın.

Sıkça Sorulan Sorular

“Karmaşık Türler: List, Dict, Optional, Union” dersi ücretsiz mi?

Evet — “Karmaşık Türler: List, Dict, Optional, Union” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Karmaşık Türler: List, Dict, Optional, Union” dersinde ne öğreneceğim?

typing modülünün genel türlerini ve Optional/Union'ı doğru biçimde kullanın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Karmaşık Türler: List, Dict, Optional, Union” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Temel Tür Ek Açıklamaları
  2. Karmaşık Türler: List, Dict, Optional, Union
  3. TypeVar, Genel Sınıflar ve Protocol
  4. mypy Çalıştırma ve Tür Hatalarını Düzeltme
← Python Academy Sayfasına Dön