Python关键字参数

我有几层函数调用,传递一个关键字参数的公共字典:
def func1(**qwargs):
    func2(**qwargs)
    func3(**qwargs)
我想在一些后续函数调用中提供一些默认参数,如下所示:
def func1(**qwargs):
    func2(arg = qwargs.get("arg", default), **qwargs)
    func3(**qwargs)
这种方法的问题在于,如果arg在qwargs中,则会引发TypeError,并为“获取关键字参数的多个值”。 我不想将qwargs [“arg”]设置为默认值,因为然后func3在没有权限的情况下获得此参数。我可以制作qwargs的copy.copy并在副本中设置“arg”,但qwargs中可能有大型数据结构,我不想复制它们(也许copy.copy不会,只有copy.deepcopy ?)。 什么是pythonic事情在这里做?     
已邀请:
只需构建并使用另一个dict来调用
func2
,将原始单独留给以后调用
func3
def func1(**qwargs):
    d = dict(arg=default)
    d.update(qwqargs)
    func2(**d)
    func3(**qwargs)
如果你想在
qwargs
中设置
arg
来覆盖
default
。否则(如果你想要
default
覆盖
qwargs
arg
的任何可能设置):
def func1(**qwargs):
    d = dict(qwargs, arg=default)
    func2(**d)
    func3(**qwargs)
因为
dict
的keyword-argument会覆盖位置参数中的值,如果有的话。     
要创建具有相同键和值的新dict,可以使用
 newdict=dict(qwargs)
如果qwargs不包含很多便宜的密钥。 如果有可能你可以重写这些函数,将它们的args作为dict而不是多个args。     

要回复问题请先登录注册