n? def foo(**kwargs):
print(kwargs)
foo()
foo(x=1,y=2) >>>{}
{'x': 1, 'y': 2}
Хехе, как непонятно что ты хочешь), ну допустим так foo(**kwargs): return kwargs n = foo(x=1,y=2) n >> {'x': 1, 'y': 2}
Ключом в словаре должно выступать значение переменной?
Пример входа и выхода в студию, постановка задачи - жесть
Внутри декоратора описываешь новую функцию, которая вызывает декорируемую функцию, дальше преобразуешь результат вызова как тебе надо, то есть итерируешься по паре ключ/значение, умножаешь значение на n, и заново кладёшь в дикт по исходному ключу, потом возвращаешь изменённый словарь. А переменная n у тебя будет доступна из внешней области видимости
Спасибо большое, мне понятно вроде. Сейчас поробую
так что ли? def multiply(n): def decorator(callable): def wrapper(*args, kwargs): result = callable(*args, kwargs) result = {key: value * n for key, value in result.items()} return result return wrapper return decorator @multiply(3) def test_func(): return {"a": 1, "b": 2, "c": 3} print(test_func()) # {'a': 3, 'b': 6, 'c': 9}
@functools.wraps можно добавить)
это что (what?)
Чтобы атрибуты декорируемой функциии сохранить на всякий случай
Как минимум имя важно, да
Спасибо большое, вы так помогли. Спасибо
Короче в гугле это называется "декоратор с аргументами python" - это на всякий случай
Обсуждают сегодня