← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
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: опиши приклади декораторів які корисні у веб сервісах, наприклад авторизація або ретраї.