Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Практичні Приклади Використання Декоратора | Декоратори
Середній Рівень Python: Аргументи, Генератори та Декоратори
course content

Зміст курсу

Середній Рівень Python: Аргументи, Генератори та Декоратори

Середній Рівень Python: Аргументи, Генератори та Декоратори

1. Пакування та Розпакування
2. Аргументи Функції
3. Функція як Аргумент
4. Область видимості змінних
5. Декоратори

Практичні Приклади Використання Декоратора

Декоратори у Python є потужним інструментом для зміни поведінки функцій або методів. Найпоширеніші способи використання - це сплячий режим, перевірка часу та ведення журналу.

1. Сплячий декоратор

Цей декоратор змушує функцію чекати певний час перед виконанням.

1234567891011121314151617
import time def sleep_decorator(seconds): def decorator(func): def wrapper(*args, **kwargs): print(f"Sleeping for {seconds} seconds before executing '{func.__name__}'") time.sleep(seconds) return func(*args, **kwargs) return wrapper return decorator @sleep_decorator(2) def my_function(): print("Function executed!") # Usage my_function()
copy

2. Декоратор перевірки

Цей декоратор перевіряє, чи відповідають вхідні дані функції певним критеріям.

1234567891011121314151617
def validate_decorator(func): def wrapper(number): if not isinstance(number, int) or number < 0: raise ValueError("Input must be a non-negative integer") return func(number) return wrapper @validate_decorator def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) # Usage print(factorial(5)) # factorial(-1) # This will raise an error
copy

3. Декоратор часу

Цей декоратор вимірює час виконання функції. Ми вже використовували його у попередньому розділі.

123456789101112131415161718
import time def timing_decorator(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"'{func.__name__}' executed in {end_time - start_time} seconds") return result return wrapper @timing_decorator def some_function(): time.sleep(1) # Simulating a task print("Function completed") # Usage some_function()
copy

Декоратор для перевірки входу використовує додаткові бібліотеки і застосовується при розробці сайтів, тому доречніше розглядати цей декоратор в контексті створення сайтів.

Як ми вже говорили, декоратори є складною темою в Python і іноді вимагають більше практики для повного розуміння цієї теми. Ви на правильному шляху у формуванні мислення програміста.

1. Що буде виведено у наступному коді?
2. Що буде виведено у наступному коді?

Що буде виведено у наступному коді?

Виберіть правильну відповідь

Що буде виведено у наступному коді?

Виберіть правильну відповідь

Все було зрозуміло?

Секція 5. Розділ 7
We're sorry to hear that something went wrong. What happened?
some-alt