kwargs2args.py 426 B

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