Перейти до основного вмісту
Модуль 9 · Урок 1 із 433/36 у курсі~12 min
Модульні уроки (1/4)

Типові підказки: типи анотацій

Підказки типу (анотації типу) — це додаткові оголошення, які говорять "ця змінна/параметр має тип X". Python НЕ перевіряє їх під час виконання: вони призначені для вас, вашого редактора (автозаповнення!) і таких інструментів, як mypy або pyright, які виконують статичну перевірку типу.

Анотування змінних

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

Синтаксис: name: type = value. Без значення це чиста декларація:

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

Функції анотування

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)

Синтаксис: param: type для кожного параметра, -> type для повернення. Функція, яка нічого не повертає, використовує -> None.

Вбудовані загальні типи (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}

Факультативний і союзний

Значення, яке може бути None:

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

X | None — це сучасний синтаксис (Python 3.10+). Еквівалент: Optional[X] від typing. Для об’єднань кількох типів: int | str | float.

набір тексту: корисні інструменти

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 = "не перевіряти" (використовуйте економно).
  • Callable[[arg1, arg2], return] = функція, яка приймає ці параметри та повертає цей тип.

mypy: перевірка типів

Ви встановлюєте mypy, запускаєте mypy file.py, і він повідомляє вам, чи збігаються типи:

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

Перевірка типів за допомогою mypy

Підказки типу Python не застосовуються під час виконання інтерпретатором; вони ігноруються під час виконання. Щоб перевірити правильність типу, ви повинні запустити зовнішній інструмент статичного аналізу, наприклад mypy, виконавши команду mypy script.py у своєму терміналі.

Спробуйте самі

вправи#python.m9.l1.e1
Спроби: 0Завантаження…

Визначте функцію `double(numbers: list[int]) -> list[int]`, яка повертає список із кожним елементом, помноженим на 2. Викличте її за допомогою [1, 2, 3] і призначте `r`. Оцініть `r`.

Завантаження редактора…
Показати підказку

Використовуйте розуміння списку або цикл for.

Рішення доступне після 3 спроб

Повторна вправа

вправи#python.m9.l1.e2
Спроби: 0Завантаження…

Визначте `first_or_none(items: list[int]) -> int | None` повертає перший елемент, якщо список непорожній, інакше None. Призначте `a = first_or_none([10, 20])` і `b = first_or_none([])`. Оцініть `(a, b)`.

Завантаження редактора…
Показати підказку

`if items` має значення true, якщо список НЕ порожній.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#python.m9.l1.e3
Спроби: 0Завантаження…

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

Завантаження редактора…
Показати підказку

Використовуйте n: int як параметр і -> int після сигнатури функції.

Рішення доступне після 3 спроб