代码之家  ›  专栏  ›  技术社区  ›  Donald Miner

用部分参数创建python函数

  •  5
  • Donald Miner  · 技术社区  · 14 年前

    我想提前将一个python函数传递给另一个函数,让它的一些参数“填满”。

    这就是简单化我所做的:

    def add(x, y):
        return x + y
    
    def increment_factory(i):  # create a function that increments by i
        return (lambda y: add(i, y))
    
    inc2 = increment_factory(2)
    
    print inc2(3) # prints 5
    

    我不想用某种方式 args 后来爆炸了 *args 因为我传递的函数 inc2 进不知道过 阿尔茨海默病 对它。

    对于一个团队项目来说,这感觉有点太聪明了…有没有一种更直接的或是蟒蛇式的方法?

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  20
  •   David    14 年前

    这被称为货币化,或部分应用。您可以使用内置的 functools.partial() . 像下面这样的事情可以满足你的需要。

    import functools
    def add(x,y):
        return x + y
    
    inc2 = functools.partial(add, 2)
    print inc2(3)