Python 通过固定参数来限制函数

Python 通过固定参数来限制函数,python,function,parameter-passing,bayesian-networks,belief-propagation,Python,Function,Parameter Passing,Bayesian Networks,Belief Propagation,我应该如何通过修正一个函数来生成比原始函数维数更小的函数 它的论点: 例如,我想用sum函数生成后续函数,如下所示: def add(x,y): return x+y 现在我正在寻找这样的东西: g=f(~,1)哪个将是后续函数,即g(x)=x+1您可以编写自己的函数: def g(y): return f(2, y) 或者更简洁地说: g = lambda y: f(2, y) 还有functools.partial: import functools def f(x,

我应该如何通过修正一个函数来生成比原始函数维数更小的函数 它的论点:

例如,我想用sum函数生成后续函数,如下所示:

def add(x,y):
    return x+y
现在我正在寻找这样的东西:


g=f(~,1)
哪个将是后续函数,即
g(x)=x+1
您可以编写自己的函数:

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

如果你做的不止一点,那么你可以使用像装饰师这样的东西

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
如果您关心结果函数的
\uu name\uuu
,请使用
name=parameter
。如果需要,您可以使用
\uuuu inspect\uuuu
模块,通过其他黑客入侵封闭的函数内部。但是,您重新编写了前面提到的
functools
部分内容,以避免必须给出关键字参数

def g(x):返回add(x,1)-这种方法有问题吗?