Lompati ke konten utama
Modul 9 · Pelajaran 1 dari 433/36 dalam kursus~12 min
Pelajaran modul (1/4)

Petunjuk tipe: tipe anotasi

Petunjuk jenis (ketik anotasi) adalah deklarasi opsional yang menyatakan "variabel/parameter ini bertipe X". Python TIDAK memverifikasinya saat runtime: itu untuk Anda, editor Anda (pelengkapan otomatis!) dan alat seperti mypy atau pyright yang melakukan pemeriksaan tipe statis.

Variabel anotasi

Python
nome: str = "Ada"
anni: int = 36
attivo: bool = True
prezzi: list[float] = [1.2, 3.4]

Sintaksnya adalah name: type = value. Tanpa nilai, ini adalah deklarasi murni:

Python
risultato: int  # nessuna assegnazione, solo "annuncio del tipo"

Fungsi anotasi

Python
def saluta(nome: str, urlante: bool = False) -> str:
    s = f"Ciao {nome}"
    return s.upper() if urlante else s

def somma(numeri: list[int]) -> int:
    return sum(numeri)

Sintaks: param: type untuk setiap parameter, -> type untuk pengembalian. Fungsi yang tidak mengembalikan apa pun menggunakan -> None.

Tipe generik bawaan (Python 3.9+)

Python
nomi: list[str] = ["a", "b"]
mappa: dict[str, int] = {"x": 1}
coppia: tuple[int, str] = (1, "ok")
unici: set[int] = {1, 2, 3}

Opsional dan Persatuan

Nilai yang mungkin None:

Python
def trova_utente(id: int) -> str | None:
    if id == 1:
        return "Ada"
    return None

X | None adalah sintaksis modern (Python 3.10+). Setara: Optional[X] dari typing. Untuk gabungan berbagai jenis: int | str | float.

mengetik: alat yang berguna

Python
from typing import Any, Callable

def applica(f: Callable[[int], int], x: int) -> int:
    return f(x)

valore: Any = "qualunque cosa"  # disabilita il check
  • Any = "jangan dicentang" (gunakan secukupnya saja).
  • Callable[[arg1, arg2], return] = fungsi yang mengambil parameter tersebut dan mengembalikan tipe tersebut.

mypy: pemeriksa tipe

Anda menginstal mypy, menjalankan mypy file.py, dan ini memberi tahu Anda apakah jenisnya cocok:

Bash
$ mypy script.py
script.py:5: error: Argument 1 to "somma" has incompatible type "str"; expected "int"

Memeriksa tipe dengan mypy

Petunjuk tipe Python tidak diterapkan saat runtime oleh penerjemah; mereka diabaikan selama eksekusi. Untuk memvalidasi kebenaran jenis, Anda harus menjalankan alat analisis statis eksternal seperti mypy dengan menjalankan perintah mypy script.py di terminal Anda.

Cobalah sendiri

Latihan#python.m9.l1.e1
Upaya: 0Memuat…

Definisikan fungsi `double(angka: daftar[int]) -> daftar[int]` yang mengembalikan daftar dengan setiap elemen dikalikan 2. Panggil dengan [1, 2, 3] dan tetapkan ke `r`. Evaluasi `r`.

Memuat editor…
Tunjukkan petunjuk

Gunakan pemahaman daftar atau perulangan for.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m9.l1.e2
Upaya: 0Memuat…

Tentukan `first_or_none(item: daftar[int]) -> int | Tidak ada` yang mengembalikan elemen pertama jika daftar tidak kosong, jika tidak, Tidak Ada. Tetapkan `a = first_or_none([10, 20])` dan `b = first_or_none([])`. Evaluasi `(a, b)`.

Memuat editor…
Tunjukkan petunjuk

`jika item` benar ketika daftar TIDAK kosong.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m9.l1.e3
Upaya: 0Memuat…

Write a function `double_value(n: int) -> int` that takes an integer, multiplies it by 2, and returns the result. Make sure to specify type hints for both the parameter and the return value. Finally, evaluate `double_value(5)`.

Memuat editor…
Tunjukkan petunjuk

Gunakan n: int sebagai parameter dan -> int setelah tanda tangan fungsi.

Solusi tersedia setelah 3 upaya