#python #python_3x #декоратор
Поясните, пожалуйста, следующее высказывание, желательно с примерами. Я новичок и никак не могу осилить эти декораторы. Декораторы могут быть использованы для расширения возможностей функций из сторонних библиотек (код которых мы не можем изменять).
Ответы
Ответ 1
Предположим, что в душе вы настоящий римлянин и вам неудобны варварские цифры, которые использует Python. Есть способ преобразовывать варварские цифры в римские и обратно - модуль roman. Но чтобы использовать его со стандартными функциями, такими как min и max, придётся писать код преобразований перед каждым вызовом. Типа: min_number = toRoman(min(fromRoman('VII'), fromRoman('X'))) Неудобно и неблаговидно! Поможет декоратор: from functools import wraps def romanize(f): @wraps(f) def wrapper(*args, **kwargs): return toRoman(f(tuple(fromRoman(i) for i in args), **kwargs)) return wrapper Декорируем интересующие функции min = romanize(min) max = romanize(max) И теперь в любом месте кода можем использовать их с римскими цифрами: min_number = min('VII', 'X')
Комментариев нет:
Отправить комментарий