【问题标题】:Function restriction by fixing an argument通过固定参数来限制功能
【发布时间】:2013-06-14 02:07:19
【问题描述】:

我应该如何通过修复 论据:

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

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

现在我正在寻找这样的东西:

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

【问题讨论】:

  • def g(x): return add(x,1) - 这种方法有什么问题吗?

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


【解决方案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

【讨论】:

    【解决方案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__,请使用name = parameter。如果需要,您可以使用__inspect__ 模块对封闭的函数内部进行其他黑客攻击。但是后来您重写了前面提到的functools 部分内容,只是为了避免必须提供关键字参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2012-09-06
      相关资源
      最近更新 更多