在Python中传递不完整的参数列表

时间:2014-06-05 05:07:42

标签: python parameters functional-programming reduce

我试图在Python中使用reduce,但我发现我需要调用的函数有2个参数。

我有办法传递其中一个参数,但是没有通过第一个参数吗?

喜欢这样

b = 10    
reduce(foo, range(20), 0)

def foo(a, b):
     return a + b

2 个答案:

答案 0 :(得分:0)

您可以使用lambda打包foo

reduce(lambda a,c: foo(a,b), range(20), 0)

其中c将不会使用。

答案 1 :(得分:0)

在您的情况下,您不需要显式传递零:

print reduce(foo, range(20))

输出:

190

您问题的另一种解释是,对于foo(a, b)方法,您希望a始终为10.
如果是这种情况,那么您不是在寻找{{1} } - 你正在寻找reduce。并且您可以通过包装map方法来实现“将其中一个参数设置为'固定'”行为

foo

输出:

def wrapper(f, a):
    def x(b):
        return f(a, b)
    return x

def foo(a, b):
    return a+b

print map(wrapper(foo, 10), range(11))