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



我试图确定当函数在映射中使用时,我们如何传入为其定义的默认参数

例如以下片段:

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

有没有一种方法可以覆盖x&使得对于lst的每个元素x=4和y=3,而不使用lambda或列表理解?

实现这一点的一种方法(在重复目标中没有提及,在那里的相关性略低(是使用嵌套函数,其中外部函数设置值并返回内部函数,然后在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的每个元素。

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

最新更新