你是否有一种简单的方法来"模拟"将参数分配给函数参数?
假设我有一个函数:
def fn(a, b, c='default', *args, **kwargs):
print(f'a={a}, b={b}, c={c}')
print(f'args={args}')
print(f'kwargs={kwargs}')
我这样调用它:
>>> args = (1, 2, 3, 4)
>>> kwargs = {'extra_kw': 5}
>>> fn(*args, **kwargs)
a=1, b=2, c=3
args=(4,)
kwargs={'extra_kw': 5}
我想提取函数fn
中的args
和kwargs
,而不需要调用fn
。
基本上,我正在尝试编写一个函数,该函数将函数和参数列表以及字典作为输入,并返回额外的args
和kwargs
:
def extract_extra_args_and_kwargs(f, *args, **kwargs):
...
预期的结果如下所示:
>>> extract_extra_args_and_kwargs(fn, args, kwargs)
((4,), {'extra_kw': 5})
我尝试过使用 inspect.signature
,但是由于Python本身必须在某个地方解析此赋值,因此我希望直接访问相应的函数。
fn(a, b, *args, c='default', **kwargs)
。 - Stephen C