假设我有以下函数:
def f(**kwargs):
for key in kwargs.keys():
print(key + ': ' + str(kwargs[key]))
def make_kwargs():
# My example implementation here
params = {'a' : 1, 'b' : 2}
return params # Here is the part I don't know how to do
并且必须以以下方式调用这些函数:
f(make_kwargs())
但是,这将返回TypeError:
TypeError:f()接受0个位置参数,但给出了1个
我试过:
return **params
但是语法是无效的。
假设我不能修改函数f()
和调用它的方式(f(make_kwargs())
),我唯一能修改的部分是如何实现make_kwargs()
,我想知道是否有办法做到这一点?
3条答案
按热度按时间egdjgwm81#
make_kwargs
返回一个字典,所以你只需要传递一个字典给f
,你需要将字典解压缩成关键字参数,如下所示:w6lpcovy2#
仍然可以打印这些值,但是在第二次调用时仍然会得到TypeError。
57hvy0tb3#
这可能有点晚了--但是这可以通过使用闭包重新定义
f
来完成: