Python конвертирует args в kwargs
Я пишу декоратор, который должен вызывать другие функции перед вызовом функции, которую он декорирует. Декорированная функция может иметь позиционные аргументы, но функции, которые вызовет декоратор, могут принимать только ключевые аргументы. У кого-нибудь есть удобный способ преобразования позиционных аргументов в аргументы с ключевыми словами?
Я знаю, что могу получить список имен переменных оформленной функции:
>>> def a(one, two=2):
... pass
>>> a.func_code.co_varnames
('one', 'two')
Но я не могу понять, как сказать, что было передано позиционно, а что было ключевым словом.
Мой декоратор выглядит так:
class mydec(object):
def __init__(self, f, *args, **kwargs):
self.f = f
def __call__(self, *args, **kwargs):
hozer(**kwargs)
self.f(*args, **kwargs)
Есть ли другой способ, кроме простого сравнения kwargs и co_varnames, добавления к kwargs чего-либо, чего нет, и надежды на лучшее?