123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # Базовый синтаксис декоратора в python
- def my_decorator(func):
- def wrapper_func():
- # Делаем что-то до вызова функции
- func()
- # Делаем что-то после вызова функции
- return wrapper_func
- '''
- def decorator(func):
- def wrapper():
- print('Start decorator')
- func()
- print('Finish decorator')
- return wrapper
- '''
- def decorator(func):
- def inner(*args, **kwargs):
- print('Стартуем декоратор')
- func(*args, **kwargs)
- print('Заканчиваем декоратор')
- return inner
- def decorator_2(func):
- def inner(*args, **kwargs):
- print('Стартуем декоратор')
- func_res = func(*args, **kwargs)
- print(f'Функция func вернула значение "{func_res}"')
- print('Заканчиваем декоратор')
- return func_res.swapcase()
- return inner
- @decorator_2
- def say_hello_to(name, surname):
- return f'Hello {name} {surname}'
- decorator
- def my_func():
- print('This is my mega function!')
- def header_h1(func):
- def inner(*args, **kwargs):
- result = func(*args, **kwargs)
- return f'<h1>{result}</h1>'
- return inner
- @header_h1
- def one_more_func(name, surname):
- return f'Hello {name} {surname}'
- def repeater(func):
- def wrapper(*args, **kwargs):
- func(*args, **kwargs)
- func(*args, **kwargs)
- func(*args, **kwargs)
- return wrapper
- def text_decor(func):
- def inner(*args, **kwargs):
- print('Hello')
- return func(*args, **kwargs)
- print('Goodbye!')
- return inner
- @text_decor
- def multiply(num1, num2):
- print(num1 * num2)
- def double_it(func):
- '''Декоратор возвращает удвоенный результат вызова декорируемой функции'''
- def inner(*args, **kwargs):
- res = func(*args, **kwargs)
- return res * 2
- return inner
- @double_it
- def get_sum_kwargs_values(**kwargs):
- return sum(kwargs.values())
- def uppercase_elements(func):
- def inner(*args, **kwargs):
- res = func(*args, **kwargs)
- if isinstance(res, dict):
- return {key:value for key, value in res.items()}
- return inner
- @uppercase_elements
- def foo_1(**kwargs):
- return {1: 'one', 2: 'store', 'three': 3, 'four': 4} | kwargs
- def main():
- # res = say_hello_to('Vasya', 'Ivanov')
- # print(f'{res=}')
- # res = one_more_func("gennadi", "LOSKOV")
- # print(f'{res=}')
-
- # print(multiply(3, 5))
- # print(get_sum_kwargs_values(a=4, b=5, d=3, t=6, r=8))
- print(foo_1(**{'Five': 5, 'sIx': 6}))
- if __name__ == '__main__':
- main()
|