【发布时间】: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 编写的,但请不要忽略它们 - 这个概念同样适用于任何支持函数式编程风格的语言。