我应该如何通过修复它的参数来制作比原始函数更小的函数:
例如,我想用 sum 函数制作后继函数,如下所示:
def add(x, y):
return x + y
现在我正在寻找这样的东西:
g = f(~, 1)
这将是后继功能,即g(x) = x+1
.
我应该如何通过修复它的参数来制作比原始函数更小的函数:
例如,我想用 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
name = parameter
如果您关心__name__
结果函数的 ,请使用。如果需要,您可能会更喜欢使用该__inspect__
模块对封闭的功能内部进行其他黑客攻击。但是后来你重写了前面提到的functools
部分内容,只是为了避免必须给出关键字参数。