Salt la conținutul principal
Modulul 9 · Lecția 1 din 433/36 în curs~12 min
Lecții din modul (1/4)

Sugestii de tip: tipuri de adnotare

Sugestiile de tip (adnotările de tip) sunt declarații opționale care spun „această variabilă/parametru are tipul X”. Python NU le verifică în timpul execuției: sunt pentru tine, editorul tău (completare automată!) și instrumente precum mypy sau drop care efectuează verificarea statică de tip.

Adnotarea variabilelor

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

Sintaxa este name: type = value. Fără valoare, este o declarație pură:

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

Funcții de adnotare

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)

Sintaxă: param: type pentru fiecare parametru, -> type pentru returnare. O funcție care nu returnează nimic folosește -> None.

Tipuri generice încorporate (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}

Opțional și Unire

O valoare care poate fi None:

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

X | None este sintaxa modernă (Python 3.10+). Echivalent: Optional[X] din typing. Pentru uniuni de mai multe tipuri: int | str | float.

tastare: instrumente utile

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 = „nu verifica” (folosește cu moderație).
  • Callable[[arg1, arg2], return] = o funcție care preia acei parametri și returnează acel tip.

mypy: verificatorul de tip

Instalați mypy, rulați mypy file.py și vă spune dacă tipurile sunt aliniate:

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

Verificarea tipurilor cu mypy

Sugestiile de tip Python nu sunt impuse în timpul rulării de către interpret; sunt ignorate în timpul execuției. Pentru a valida corectitudinea tipului, trebuie să rulați un instrument extern de analiză statică, cum ar fi mypy, executând comanda mypy script.py în terminalul dvs.

Încercați-l singur

Exercițiu#python.m9.l1.e1
Încercări: 0Se încarcă…

Definiți o funcție `double(numbers: list[int]) -> list[int]` care returnează o listă cu fiecare element înmulțit cu 2. Apelați-o cu [1, 2, 3] și atribuiți-i lui `r`. Evaluează `r`.

Se încarcă editorul...
Afișează indiciu

Utilizați o listă de înțelegere sau o buclă for.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#python.m9.l1.e2
Încercări: 0Se încarcă…

Definiți `first_or_none(items: list[int]) -> int | None` care returnează primul element dacă lista nu este goală, în caz contrar None. Atribuiți `a = first_or_none([10, 20])` și `b = first_or_none([])`. Evaluați `(a, b)`.

Se încarcă editorul...
Afișează indiciu

`if items` este adevărat când lista NU este goală.

Soluție disponibilă după 3 încercări

Provocare suplimentară

Exercițiu#python.m9.l1.e3
Încercări: 0Se încarcă…

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)`.

Se încarcă editorul...
Afișează indiciu

Utilizați n: int ca parametru și -> int după semnătura funcției.

Soluție disponibilă după 3 încercări