Практичні Приклади Використання Декоратора
Декоратори у Python є потужним інструментом для зміни поведінки функцій або методів. Найпоширеніші способи використання - це сплячий режим, перевірка часу та ведення журналу.
1. Сплячий декоратор
Цей декоратор змушує функцію чекати певний час перед виконанням.
1234567891011121314151617import 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()
2. Декоратор перевірки
Цей декоратор перевіряє, чи відповідають вхідні дані функції певним критеріям.
1234567891011121314151617def 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
3. Декоратор часу
Цей декоратор вимірює час виконання функції. Ми вже використовували його у попередньому розділі.
123456789101112131415161718import 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()
Декоратор для перевірки входу використовує додаткові бібліотеки і застосовується при розробці сайтів, тому доречніше розглядати цей декоратор в контексті створення сайтів.
Як ми вже говорили, декоратори є складною темою в Python і іноді вимагають більше практики для повного розуміння цієї теми. Ви на правильному шляху у формуванні мислення програміста.
1. Що буде виведено у наступному коді?
2. Що буде виведено у наступному коді?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.7
Практичні Приклади Використання Декоратора
Свайпніть щоб показати меню
Декоратори у Python є потужним інструментом для зміни поведінки функцій або методів. Найпоширеніші способи використання - це сплячий режим, перевірка часу та ведення журналу.
1. Сплячий декоратор
Цей декоратор змушує функцію чекати певний час перед виконанням.
1234567891011121314151617import 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()
2. Декоратор перевірки
Цей декоратор перевіряє, чи відповідають вхідні дані функції певним критеріям.
1234567891011121314151617def 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
3. Декоратор часу
Цей декоратор вимірює час виконання функції. Ми вже використовували його у попередньому розділі.
123456789101112131415161718import 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()
Декоратор для перевірки входу використовує додаткові бібліотеки і застосовується при розробці сайтів, тому доречніше розглядати цей декоратор в контексті створення сайтів.
Як ми вже говорили, декоратори є складною темою в Python і іноді вимагають більше практики для повного розуміння цієї теми. Ви на правильному шляху у формуванні мислення програміста.
1. Що буде виведено у наступному коді?
2. Що буде виведено у наступному коді?
Дякуємо за ваш відгук!