0Pricing
Python Academy · Pelajaran

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, str

Dict 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)   # 1

Anotasi 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: float

Optional[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 error

TypedDict

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 4

Any 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 normally

Pemeriksaan 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

  1. Anotasi Tipe Dasar
  2. Tipe Kompleks: List, Dict, Optional, Union
  3. TypeVar, Class Generik, dan Protocol
  4. Menjalankan mypy dan Memperbaiki Error Tipe
← Kembali ke Python Academy