假设我有一个函数
get_data
,它需要一些关键字参数。我是否可以这样做?def get_data(arg1, **kwargs):
print arg1, arg2, arg3, arg4
arg1 = 1
data['arg2'] = 2
data['arg3'] = 3
data['arg4'] = 4
get_data(arg1, **data)
因此,这个想法是避免在函数调用和函数定义中重复输入参数名称。我使用字典作为参数调用函数,字典的键变成了函数的本地变量,它们的值是字典的值。
我尝试了上述方法,但出现了错误,显示全局名称'arg2'未定义
。我明白我可以更改get_data
定义中的locals()
以获得所需的行为。
所以我的代码看起来像这样:
def get_data(arg1, kwargs):
locals().update(kwargs)
print arg1, arg2, arg3, arg4
arg1 = 1
data['arg2'] = 2
data['arg3'] = 3
data['arg4'] = 4
get_data(arg1, data)
而且它也不起作用。如果没有使用locals()
,我能否实现这种行为?
locals
,因为它甚至不能保证始终正常工作:http://docs.python.org/2/library/functions.html#locals - jamylakdata
没有定义的arg4
时,它会引发NameError。它甚至不会打印任何数据,只会引发一个错误。 - kampudet_data(arg1, arg2, arg3, arg4): ...
签名呢? - Vladimir