В теории это, вроде, функция, которая позволяет дописывать другую функцию, не подвергая её изменениям внутри неё самой
При создании телеграм-ботов их используют, через telebot по крайней мере
да используют, и много где
In [13]: def print_elapsed_time(func): ...: @functools.wraps(func) ...: def _wrapper(*args, **kwargs): ...: started_at = time.perf_counter() ...: result = func(*args, **kwargs) ...: ended_at = time.perf_counter() ...: print(f'{func!r} elapsed time', ended_at - started_at) ...: return result ...: return _wrapper ...: ...: In [14]: @print_elapsed_time ...: def sleep_for(sec): ...: print(f'going to sleep for {sec} seconds.') ...: time.sleep(sec) ...: print('awaken') ...: return sec ...: In [15]: sleep_for(2) going to sleep for 2 seconds. awaken <function sleep_for at 0x7f07efd0e9e0> elapsed time 2.002062894000119
Обсуждают сегодня