Tipe Kompleks: List, Dict, Optional, Union
Gunakan generic dari modul typing serta Optional/Union dengan benar.
Tipe Kompleks: List, Dict, Optional, Union adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Ikhtisar Modul typing
Sebelum Python 3.9, tipe generik seperti List, Dict, dan Tuple berasal dari typing. Sejak versi 3.9, Anda dapat menggunakan tipe bawaan secara langsung.
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 dan Sequence
Gunakan list[T] untuk urutan yang dapat diubah dan Sequence[T] saat menerima urutan terurut apa pun, seperti list, tuple, atau str.
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 dan Mapping
Gunakan dict[K,V] untuk kamus yang dapat diubah dan Mapping[K,V] untuk objek mirip kamus yang hanya dapat dibaca.
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) # 1Anotasi Tuple
Panjang tetap: tuple[int, str, float]. Panjang variabel: 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] adalah bentuk singkat dari T | None. Ini selalu merupakan pilihan yang tepat saat sebuah parameter boleh tidak ada.
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)Tipe Union
Gunakan Union[X, Y] atau X | Y (3.10+) untuk nilai yang mungkin berupa salah satu dari beberapa tipe.
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)Tipe Literal
Literal["a","b","c"] membatasi nilai ke sekumpulan literal tertentu.
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 menganotasikan bentuk kamus yang setiap kuncinya dipetakan ke tipe tertentu.
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 dan FrozenSet
Anotasikan set dengan set[T] dan set beku dengan frozenset[T].
def unique(items: list[int]) -> set[int]:
return set(items)
def allowed_methods() -> frozenset[str]:
return frozenset({"GET", "POST", "DELETE"})Iterable dan Iterator
Gunakan Iterable[T] untuk objek apa pun yang dapat diiterasi; gunakan Iterator[T] untuk objek yang memiliki __next__.
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 dan NoReturn
Any mengecualikan suatu nilai dari pemeriksaan tipe. NoReturn menandai fungsi yang tidak pernah mengembalikan nilai, karena selalu memunculkan pengecualian atau terus berulang tanpa akhir.
from typing import Any, NoReturn
def accept_all(x: Any) -> None:
print(x)
def crash(msg: str) -> NoReturn:
raise RuntimeError(msg) # never returns normallyPemeriksaan Singkat
Apa arti Optional[str]?
Ringkasan
Gunakan list[T], dict[K,V], dan tuple[T,...] untuk koleksi. Optional[T] = T | None. Gunakan Union[X,Y] atau X|Y untuk beberapa tipe. Gunakan Literal untuk nilai tertentu, TypedDict untuk bentuk kamus bertipe, dan Any untuk mengecualikan nilai dari pemeriksaan tipe.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tipe Kompleks: List, Dict, Optional, Union” gratis?
Ya — teks lengkap “Tipe Kompleks: List, Dict, Optional, Union” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Tipe Kompleks: List, Dict, Optional, Union”?
Gunakan generic dari modul typing serta Optional/Union dengan benar. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Tipe Kompleks: List, Dict, Optional, Union” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Anotasi Tipe Dasar
- Tipe Kompleks: List, Dict, Optional, Union
- TypeVar, Class Generik, dan Protocol
- Menjalankan mypy dan Memperbaiki Error Tipe