通过修复参数来限制功能

时间:2013-06-18 00:49:47

标签: python function argument-passing bayesian-networks belief-propagation

如何修复一个比原始维度更小的维度的函数 它的论点:

例如,我想用sum函数制作后继函数,如下所示:

def add(x,y):
    return x+y

现在我正在寻找这样的事情:

g = f(〜,1)这将是后继函数,即g(x)= x + 1.

2 个答案:

答案 0 :(得分:10)

您可以编写自己的功能:

def g(y):
    return f(2, y)

或者更简洁:

g = lambda y: f(2, y)

还有functools.partial

import functools

def f(x, y):
    return x + y

g = functools.partial(f, 2)

然后您可以像以前一样调用它:

>>> g(3)
5

答案 1 :(得分:2)

如果你做的不止一点,那么你可以使用类似装饰的东西。

def with_x(x, fn, name=None):
  def foo(*args, **kwargs):
    return fn(x, *args, **kwargs)
  if name:
    foo.__name__ = name
return foo

def example(x,y):
  return x**y

g = with_x(2, example)

g(3)  #8

如果您关心结果函数的名称,请使用name =参数。如果需要的话,可以使用 inspect 模块将其他黑客变得更加精彩。但是之后你重新编写了前面提到的functools部分内容,以避免必须提供关键字参数。