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

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

Python Лабораторна 23: Логування і кеш через декоратори

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

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

Тема: Функції вищого порядку і декоратори

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

Meta: навчитися писати декоратори які обгортають функції додатковою поведінкою без зміни їх коду.



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

Komandi: cd ~/python_lab1/src; touch app/decor23.py



Krok 2. Додати просту функцію обчислення квадрату.

Komanda: printf "def square(x: int) -> int:
    return x * x
" > app/decor23.py



Krok 3. Додати декоратор який логуватиме вхідні аргументи і результат.

Poyasnennya: всередині wrapper друкуй значення до і після виклику.



Krok 4. Застосувати декоратор до функції square і перевірити вивід при виклику.

Komanda: python -c "from app.decor23 import square; print(square(5))"



Krok 5. Додати універсальний декоратор який працює з будь якою функцією через *args and **kwargs.

Poyasnennya: wrapper повинен передавати усі аргументи далі.



Krok 6. Додати декоратор кешування результатів у словник.

Poyasnennya: ключем можна зробити кортеж аргументів.



Krok 7. Застосувати декоратор кешування до функції з важкими обчисленнями і заміряти час виконання при повторних викликах.



Krok 8. Занотувати обмеження такого кешу, наприклад накопичення в памʼяті.



Krok 9. Продумати як поєднати кілька декораторів на одній функції і порядок їх застосування.



Krok 10. Mini zvit.

Zavdannya: опиши приклади декораторів які корисні у веб сервісах, наприклад авторизація або ретраї.