Форум сайта python.su
def close_db(fn): """Decorator to be used with tasks that may operate on the database.""" @wraps(fn) def inner(*args, **kwargs): try: return fn(*args, **kwargs) finally: if not HUEY.immediate: close_old_connections() return inner def db_task(*args, **kwargs): def decorator(fn): ret = task(*args, **kwargs)(close_db(fn)) ret.call_local = fn return ret return decorator
ret = task(*args, **kwargs)(close_db(fn))
Офлайн
в питоне всё есть объект. Класс, модуль, функция - это объекты интерпретатора. То есть функция - это равнозначная переменная. У вас етсь функция чей вызов возвращает другую функцию. И уже ту функцию вы и вызываете. Смотрите, есть функция А, она возвращает функцию Б. А = lambda: Б. Но “Б” это тоже функция, то есть вы можете сделать Б() - вызвать её. Уберите лишнее и А()() работает
Отредактировано FishHook (Июль 31, 2021 21:36:21)
Офлайн
Суть понял, спасибо.
Офлайн