覆盖Map中使用的函数的默认参数

时间:2018-12-04 13:15:35

标签: python

我试图确定当在地图中使用函数时如何传递为该函数定义的默认参数

例如以下代码段:

def func1(a,x=3,y=2):
    return (a + x)*y
lst = [1,2,3]
print map(func1,lst)

是否有一种方法可以覆盖x和y的值,以便对于lst的每个元素x = 4和y = 3,而无需使用lambda或列表理解?

1 个答案:

答案 0 :(得分:0)

一种实现此目的的方法(在重复的目标中未提及,在该目标中相关性稍低)是使用嵌套函数,其中外部函数设置值并返回内部函数,然后在内部函数中执行map

def func1(x=3,y=2):
    def inner(a):
        return (a + x)*y
    return inner

lst = [1, 2, 3]
print map(func1(), lst)
print map(func1(x=4, y=3), lst)

即使您不想覆盖默认参数,也请注意添加的(),否则它将外部函数应用于lst的每个元素。

外部函数基本上是一个函数工厂,它会产生带有正确设置参数的内部函数。