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, strDict 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) # 1Tuple 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: floatOptional[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 errorTypedDict
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 4Any 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 normallyHı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
- Temel Tür Ek Açıklamaları
- Karmaşık Türler: List, Dict, Optional, Union
- TypeVar, Genel Sınıflar ve Protocol
- mypy Çalıştırma ve Tür Hatalarını Düzeltme