我正在重构一段代码,并且遇到了以下问题。我有一个庞大的参数列表,现在我想将其作为kwargs
传递。代码是这样的:
def f(a, b, c, ...):
print a
...
f(a, b, c, ...)
我将其重构为:
data = dict(a='aaa', b='bbb', c='ccc', ...)
f(**data)
这意味着我必须做:
def f(**kwargs):
print kwargs['a']
...
但这是皮塔饼。我想保留:
def f(**kwargs):
# Do some magic here to make the kwargs directly accessible
print a
...
是否可以通过使用一些帮助程序类/库来直接访问
kwargs
dict
中的参数的任何直接方法? 最佳答案
有some ways-但您也可以像这样包装函数:
def f(**kwargs):
arg_order = ['a', 'b', 'c', ...]
args = [kwargs.get(arg, None) for arg in arg_order]
def _f(a, b, c, ...):
# The main code of your function
return _f(*args)
样本:
def f(**kwargs):
arg_order = ['a', 'b', 'c']
args = [kwargs.get(arg, None) for arg in arg_order]
def _f(a, b, c):
print a, b, c
return _f(*args)
data = dict(a='aaa', b='bbb', c='ccc')
f(**data)
输出:
>>>
aaa bbb ccc
关于python - 使kwargs可以直接访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20116033/