← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 18: Статична перевірка типів

Технологія: Python

Номер лабораторної: 18 · Рівень: middle

Тема: Типи і mypy

Повний опис / сценарій лабораторної:

Meta: навчитися описувати типи у функціях і класах та перевіряти їх mypy.



Krok 1. Встановити mypy у віртуальному середовищі.

Komandi: cd ~/python_lab1; source .venv/bin/activate; pip install mypy



Krok 2. Створити файл src/app/types18.py.

Komanda: cd src; printf "from typing import Iterable

def avg(values: Iterable[float]) -> float:
    total = 0.0
    count = 0
    for v in values:
        total += v
        count += 1
    if count == 0:
        raise ValueError("empty iterable")
    return total / count
" > app/types18.py



Krok 3. Запустити mypy на цьому файлі.

Komанда: mypy app/types18.py



Krok 4. Навмисно порушити типи, викликавши avg з некоректними аргументами у додатковому файлі.

Komanda: printf "from app.types18 import avg

print(avg([1, 2, 3]))
print(avg(["a", "b"]))
" > app/types18_use.py



Krok 5. Запустити mypy на всьому пакеті app.

Komанда: mypy app

Poyasnennya: mypy повинен показати помилку для другого виклику.



Krok 6. Виправити код або додати налаштування mypy щоб дозволити частинну типізацію.



Krok 7. Створити файл mypy.ini з базовою конфігурацією.

Komanda: cd ..; printf "[mypy]
python_version = 3.11
ignore_missing_imports = True
" > mypy.ini



Krok 8. Повторно запустити mypy і переконатися що конфігурація застосувалась.

Komанда: cd src; mypy app



Krok 9. Занотувати плюси і мінуси статичної перевірки типів у Python проєктах.



Krok 10. Mini zvit.

Zavdannya: опиши які модулі у реальному сервісі ти б почав покривати type hints у першу чергу.