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
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:
risultato: int # nessuna assegnazione, solo "annuncio del tipo"Fungsi anotasi
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+)
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:
def trova_utente(id: int) -> str | None:
if id == 1:
return "Ada"
return NoneX | None adalah sintaksis modern (Python 3.10+). Setara: Optional[X] dari typing.
Untuk gabungan berbagai jenis: int | str | float.
mengetik: alat yang berguna
from typing import Any, Callable
def applica(f: Callable[[int], int], x: int) -> int:
return f(x)
valore: Any = "qualunque cosa" # disabilita il checkAny= "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:
$ 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
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`.
Tunjukkan petunjuk
Gunakan pemahaman daftar atau perulangan for.
Solusi tersedia setelah 3 upaya
Tinjau latihan
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)`.
Tunjukkan petunjuk
`jika item` benar ketika daftar TIDAK kosong.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
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)`.
Tunjukkan petunjuk
Gunakan n: int sebagai parameter dan -> int setelah tanda tangan fungsi.
Solusi tersedia setelah 3 upaya