Bài học theo mô-đun (1/4)
Gợi ý gõ: các loại chú thích
Gợi ý loại (chú thích loại) là khai báo tùy chọn cho biết "biến/tham số này có loại X". Python KHÔNG xác minh chúng khi chạy: chúng dành cho bạn, trình soạn thảo của bạn (tự động hoàn thành!) và các công cụ như mypy hoặc pyright thực hiện kiểm tra kiểu tĩnh.
Chú thích các biến
nome: str = "Ada"
anni: int = 36
attivo: bool = True
prezzi: list[float] = [1.2, 3.4]Cú pháp là name: type = value. Không có giá trị thì đó là một khai báo thuần túy:
risultato: int # nessuna assegnazione, solo "annuncio del tipo"Chức năng chú thích
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)Cú pháp: param: type cho mỗi tham số, -> type cho kết quả trả về.
Hàm không trả về gì sẽ sử dụng -> None.
Các loại chung tích hợp (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}Tùy chọn và Liên minh
Giá trị có thể là None:
def trova_utente(id: int) -> str | None:
if id == 1:
return "Ada"
return NoneX | None là cú pháp hiện đại (Python 3.10+). Tương đương: Optional[X] từ typing.
Đối với các kết hợp nhiều loại: int | str | float.
đánh máy: công cụ hữu ích
from typing import Any, Callable
def applica(f: Callable[[int], int], x: int) -> int:
return f(x)
valore: Any = "qualunque cosa" # disabilita il checkAny= "không kiểm tra" (sử dụng tiết kiệm).Callable[[arg1, arg2], return]= hàm lấy các tham số đó và trả về loại đó.
mypy: trình kiểm tra kiểu
Bạn cài đặt mypy, chạy mypy file.py và nó sẽ cho bạn biết liệu các loại có xếp hàng hay không:
$ mypy script.py
script.py:5: error: Argument 1 to "somma" has incompatible type "str"; expected "int"Kiểm tra các loại với mypy
Gợi ý kiểu của Python không được trình thông dịch thực thi trong thời gian chạy; chúng bị bỏ qua trong quá trình thực hiện. Để xác thực tính chính xác của loại, bạn phải chạy công cụ phân tích tĩnh bên ngoài như mypy bằng cách thực thi lệnh mypy script.py trong thiết bị đầu cuối của mình.
Hãy tự mình thử
Xác định hàm `double(numbers: list[int]) -> list[int]` trả về một danh sách với mỗi phần tử nhân với 2. Gọi nó bằng [1, 2, 3] và gán cho `r`. Đánh giá `r`.
Hiển thị gợi ý
Sử dụng khả năng hiểu danh sách hoặc vòng lặp for.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Xác định `first_or_none(items: list[int]) -> int | None` trả về phần tử đầu tiên nếu danh sách không trống, nếu không thì Không. Gán `a = first_or_none([10, 20])` và `b = first_or_none([])`. Đánh giá `(a, b)`.
Hiển thị gợi ý
`if items` là đúng khi danh sách KHÔNG trống.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
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)`.
Hiển thị gợi ý
Sử dụng n: int làm tham số và -> int sau chữ ký hàm.
Giải pháp khả dụng sau 3 lần thử