Sto scrivendo un decoratore che deve chiamare altre funzioni prima di chiamare la funzione che sta decorando. La funzione decorata può avere argomenti posizionali, ma le funzioni che il decoratore chiamerà possono accettare solo argomenti di parole chiave. Qualcuno ha un modo pratico per convertire argomenti posizionali in argomenti di parole chiave?Python converte args in kwargs
so che posso ottenere un elenco dei nomi delle variabili della funzione decorato:
>>> def a(one, two=2):
... pass
>>> a.func_code.co_varnames
('one', 'two')
Ma io non riesco a capire come raccontare ciò che è stato approvato in modo posizionale e quello che era come parola chiave.
mio decoratore si presenta così:
class mydec(object):
def __init__(self, f, *args, **kwargs):
self.f = f
def __call__(self, *args, **kwargs):
hozer(**kwargs)
self.f(*args, **kwargs)
C'è un modo diverso kwargs solo confronto e co_varnames, aggiungendo al kwargs tutto quanto non in là, e sperando per il meglio?
Perché voi avete bisogno di sapere quali argomenti sono stati posizionale? –
Perché ho bisogno di convertirli in kwargs per chiamare la funzione hozer. Questa funzione accetta solo kwargs, ma ha bisogno di conoscere tutti gli argomenti originariamente chiamati. Quindi, a seconda che le persone chiamino o meno la funzione decorata con argomenti posizionali o con nome, la funzione hozer può o meno avere tutti i dati di cui ha bisogno. – jkoelker