небольшой тест сделать
Месяц назад закончил курс Python для пентестера от Codeby
Окей, пойдёт. Напишите декоратор для функции, который будет перед её запуском print'ить её имя. Решение для синхронных функций, обеспечьте максимальную гибкость. Если не знаете как получить имя функции, пишите.
Надеюсь проходили декораторы?
+, заставил ты меня запустить комп)
Добавлю что под максимальной гибкостью подразумевается использование в самых разных сценариях (без магии), чтобы ваше решение не сыпалось и работало корректно
def custom(func): def wrapper(*args, **kwargs): print(func.__name__) func(*args, **kwargs) return wrapper
в чём именно?)
Раз уж ты запустил ПК, прогони такой код: @custom() def add(a, b): return a + b a = 5 b = 6 print(add(5, 6)) А тот самый минус который можно списать - то, что твой декоратор не принимает ни арги, ни кварги. Но это ладно. Мой вариант приложить?
Понял что не сделал - def custom(func): def wrapper(*args, **kwargs): print(func.__name__) result = func(*args, **kwargs) return result return wrapper
Мой вариант: def custom(func, *dec_args, **dec_kwargs): def wrapped(*args, **kwargs): print(func.__name__) return func(*args, **kwargs) return wrapped
Окей, а как бы ты сделал для корутины? *асинхронной функции
def custom(func): async def wrapper(*args, **kwargs): print(func.__name__) result = await func(*args, **kwargs) return result return wrapper
да нахуй тебе это резалт
можно без него)
Вот и я к тому, код только засоряет
А зачем тут принимать аргументы для декоратора, не используя их?)
условие задачи. максимальная гибкость. да и я таки учёл что этот момент прояснил слабо
Скорее нужно без него. Видел какой-то PEP про это. Нет смысла объявлять переменную только для того, чтобы на следующей строке один раз использовать в простой операции.
Вроде уже отписывал, пункт невнятный получился.
Обсуждают сегодня