【问题标题】:What is the purpose of the lambda function in this function and what is the advantage of using it? [duplicate]lambda函数在这个函数中的作用是什么,使用它有什么好处? [复制]
【发布时间】:2021-06-02 03:43:50
【问题描述】:

我有一段有趣的代码:

def get_unit_sigmoid_func(alpha: float) -> Callable[[float], float]:
    return lambda x, alpha=alpha: 1. / (1 + (1 / np.where(x == 0, 0.01, x) - 1) ** alpha)

我只是不明白这是什么意思。他们为什么不写类似的东西:

def get_unit_sigmoid_func(alpha,x):
    return 1 / (1+(1/np.where(x==0,0.01,x)-1)**alpha)

第一种写法有什么好处吗?

【问题讨论】:

  • 在将函数用作其他函数的参数时,您可以压缩那些没有太多工作要做的函数的行数,这是函数式编程的核心概念
  • 这能回答你的问题吗? What is 'Currying'?。注意:关于该问题的示例是用 JavaScript 编写的,但请不要忽略它们 - 这个概念同样适用于任何支持函数式编程风格的语言。

标签: python numpy lambda


【解决方案1】:

功能

def get_unit_sigmoid_func(alpha: float) -> Callable[[float], float]:
    return lambda x, alpha=alpha: 1. / (1 + (1 / np.where(x == 0, 0.01, x) - 1) ** alpha)

返回一个函数,它接受一个浮点值和一个alpha。这个函数设置了一个默认的alpha 值,所以你不需要指定它。当您需要一个具有特定签名的函数(例如,接受一个参数),但您想先设置一些参数(如alpha)时,这很有用。

功能

def get_unit_sigmoid_func(alpha,x):
    return 1 / (1+(1/np.where(x==0,0.01,x)-1)**alpha)

返回值,但请注意它需要一个 alpha 参数和一个浮点数。

【讨论】:

  • 好吧有道理。谢谢你。有什么好的资源可以进一步阐述这些概念吗?这是我第一次在 Python 中看到如此详细的类型提示。
  • 第一个函数创建了一个为alpha设置了默认值的函数,它仍然允许用户覆盖它。
  • 这是“部分功能应用程序”的示例。该搜索词应该可以帮助您找到有关该主题的大量资源。这里有对此的支持:docs.python.org/3/library/functools.html#functools.partial
猜你喜欢
  • 2019-08-13
  • 2010-12-04
  • 1970-01-01
  • 2020-03-08
  • 2010-10-22
  • 1970-01-01
  • 2019-10-12
  • 2017-07-25
相关资源
最近更新 更多