def retry(fn, *args, **kwargs):
return fn(*args, **kwargs)
Таким образом, первый аргумент retry
является функцией (методом), и он будет принимать произвольное количество аргументов и аргументов ключевого слова и передавать их в fn
.Это часто называют «распаковкой», хотя в других языках я слышал, что это называется «сплат».
Эта версия просто вызывает ее немедленно, но вы можете добавить задержку, цикл или что-то еще, если нужно.
Я хотел бы узнать больше о синтаксисе, который вы использовали здесь.На что я смотрю?
>>> def print_them(*args, **kwargs):
... print(args, kwargs) # args is a tuple & kwargs is a dict
...
>>> print_them(1, 2, 3, spam='foo', bacon='bar')
(1, 2, 3) {'spam': 'foo', 'bacon': 'bar'}
>>> print(1, 2, 3, sep=':')
1:2:3
>>> print(*[1, 2, 3], **{'sep': ':'}) # equivalent to the above
1:2:3
Это часть синтаксиса для определений функций и вызовов функций, точно так же как ,
или ()
.Он имеет совершенно иной смысл, чем операторы степени и умножения.