# python 3.10 def pre_params(_func=None, *, delay=0): def pre_execute(func): @wraps(func) def wrapper(*args, **kwargs): print(f'Pre executing with delay {delay}') return func(*args, **kwargs) return wrapper print (f'_func: {_func}') if _func is None: return pre_execute else: return pre_execute(_func) @pre_params def sample_function(value: int, name: str) -> str: print(f'{name} on {value}') return 'RUN OK' @pre_params(delay=10) def sample_function(value: int, name: str) -> str: print(f'{name} on {value}') return 'RUN OK'
Собственно есть декоратор и пример его использования. И к этому вопросы
1. в самой первой строке идет вызов параметров. Что за “ *, ” в качестве второго параметра ?
2. почему при вызове декоратора без параметра, _func имеет значение равное “<function sample_function at 0x7f2395d62200>” , а при вызове с параметром, _func = None