嘉渊
2023-07-21 e79c9a801e7e7458ce6894fa85178fa974dfd18b
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])