【问题标题】:Override default arguments of a function used in Map [duplicate]覆盖 Map 中使用的函数的默认参数 [重复]
【发布时间】:2018-12-04 13:15:34
【问题描述】:

我正在尝试确定如何传递在 map 中使用时为函数定义的默认参数

例如对于下面的sn-p:

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 或列表理解?

【问题讨论】:

  • 您可以编写另一个函数并使用它。
  • 或者您可以使用 lambda 并将 x、y 保留为变量。

标签: python


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多