Middle
162
Python-да wraps декораторы не үшін керек?
AI-дан жауап
sobes.tech AI
# Импорт декоратора wraps
from functools import wraps
# Определение декоратора, который выводит сообщение до и после выполнения функции
def simple_decorator(func):
# Использование wraps для сохранения метаданных оригинальной функции
# Без wraps информация о decorated_function (имя, docstring) будет принадлежать wrapper_function
@wraps(func)
def wrapper_function(*args, **kwargs):
print("Before function call")
result = func(*args, **kwargs)
print("After function call")
return result
return wrapper_function
# Применение декоратора к функции
@simple_decorator
def my_function(a, b):
"""Бұл my_function-ке арналған құжаттама."""
return a + b
# Декорланған функцияны шақыру
result = my_function(5, 3)
# Функцияның метадеректерін тексеру
# my_function.__name__ 'my_function' болады (wraps арқасында)
# my_function.__doc__ 'Бұл my_function-ке арналған құжаттама.' болады (wraps арқасында)
print(f"Функция атауы: {my_function.__name__}")
print(f"Функцияның құжаттамасы: {my_function.__doc__}")