【问题标题】:Creating Python function with partial parameters使用部分参数创建 Python 函数
【发布时间】:2010-07-15 18:39:24
【问题描述】:

我想将一个 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 的函数不知道将args 传递给它。

这对于一个小组项目来说感觉有点太聪明了...有没有更直接或 Pythonic 的方式来做到这一点?

谢谢!

【问题讨论】:

    标签: python lambda


    【解决方案1】:

    这称为柯里化或部分应用。您可以使用内置的functools.partial()。像下面这样的东西会做你想做的事。

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

    【讨论】:

    • 谢谢! Haskell 我最喜欢的功能之一是内置的柯里化。我应该只使用这个词:)。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2019-12-10
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多