1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from functools import wraps
- '''
- Такой декоратор работать не будет
- '''
- def html_tag(func, name_tag='h1'):
- def inner(*args, **kwargs):
- result = func(*args, **kwargs)
- return f'<{name_tag}>{result}</{name_tag}>'
- return inner
- def decorator_factory(a, b):
- print('Запуск функции создания декоратора')
- def decorator(fn):
- print('Запуск декоратора')
- def wrapper(*args, **kwargs):
- print('Запуск функции wrapper')
- print('Переданные аргументы: ', a, b)
- return fn(*args, **kwargs)
- return wrapper
- return decorator
- '''
- Можно раскрыть следующей записью
- decorator = decorator_factory() # получаем декоратор из decorator_factory
- original_func = decorator(original_func) # декорируем
- Или есть еще вариант
- original_func = decorator_facotry()(original_func)
- '''
- @decorator_factory(10, 20) # Обратите внимание на оператор вызова
- def original_func():
- print('Запуск оригинальной функции')
- def main():
- original_func()
- if __name__ == '__main__':
- main()
|