haoneng.lhn
2023-07-20 3e8159e5b0f6e7e96d4e6ca1f4b4d8ccb151ace5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import inspect
 
 
def func(a: int, b, *, c, **kwargs):
    pass
 
def kwargs2args(func, kwargs):
    parameters = inspect.signature(func).parameters
    d = {k: i for i, k in enumerate(parameters)}
    args = [None for i in range(len(parameters))]
    for k, v in kwargs.items():
        if k in d:
            args[d[k]] = v
 
    for i, v in enumerate(args):
        if v is None:
            break
 
    return tuple(args[:i])