使用默认参数传入函数

mir*_*nix 3 python

我在Python中有一个函数,f(a, b)我正在尝试定义一个新函数g,它接受f一个已设置的参数,类似于g(f(a = 5)).这将是一个简单的例子:

def sum(a, b):
   return a+b

def g(x, f):
   return f(x)
Run Code Online (Sandbox Code Playgroud)

我希望能够评估g(5, sum(b=0)).我怎么做?

J0H*_*0HN 6

使用functools.partial:

g(5, partial(sum, b=5))
Run Code Online (Sandbox Code Playgroud)

返回一个新的部分对象,当被调用时,其行为类似于使用位置参数args和关键字参数关键字调用的func .如果为调用提供了更多参数,则将它们附加到args.如果提供了其他关键字参数,则它们会扩展和覆盖关键字

partial()用于部分函数应用程序,它"冻结"函数的参数和/或关键字的某些部分,从而产生具有简化签名的新对象.例如,partial()可用于创建一个callable,其行为类似于int()函数,其中base参数默认为2:

basetwo = partial(int, base=2)
Run Code Online (Sandbox Code Playgroud)