Python通过函数包装器传递变量赋值

Tim*_*ton 2 python variables function argument-passing

所以我知道你可以通过执行以下操作将函数包装在另一个函数周围.

def foo(a=4,b=3):
   return a+b
def bar(func,args):
   return func(*args)
Run Code Online (Sandbox Code Playgroud)

所以,如果我随后打电话

bar(foo,[2,3])
Run Code Online (Sandbox Code Playgroud)

返回值为5.

我想知道有没有办法使用bar来调用foo与foo(b = 12),其中bar会返回16?

这有意义吗?非常感谢你提前的时间!抱歉问了这么多问题.

Mar*_*off 11

这需要**kwargs(关键字参数)语法.

def foo(a=4, b=3):
    return a+b
def bar(func, *args, **kwargs):
    return func(*args, **kwargs)

print bar(foo, b=12) # prints 16
Run Code Online (Sandbox Code Playgroud)

*args任何数量的位置参数在哪里**kwargs,都是传入的所有命名参数.

当然,他们只是*args**kwargs按照惯例; 你可以命名他们*panda**grilled_cheese所有Python关怀.