首页 > 解决方案 > Function(params...)(params) 在 python 中做了什么?

问题描述

我遇到了一些类似于以下的 Keras 函数:函数(1*用逗号分隔的参数列表)(2*A 参数)。但我不明白 Function 在第二个参数列表中做了什么。我从未在 Python 中遇到过这种函数。我看到的常用函数原型类型如下:函数(参数列表)

在 Keras 中遇到的这些功能的示例:

x = Dense(128, activation='relu')(x) x = Dropout(0.35)(x) out = Dense(num_classes, activation='softmax')(x)

在这种情况下,看起来 Function 在应用新更改之前考虑了之前在 x 上所做的事情。

  1. 这种函数编写是否有任何 Python 手册支持?
  2. 它是用 Python 编写的一种新型函数吗?
  3. 它是如何工作的 ?

标签: pythonkeras

解决方案


它只是一个返回您立即调用的函数的函数。你也可以做到的:

def add(x):
    def add_x(y):
        return x + y
    return add_x

现在可以像这样调用此函数:

>>> add(4)(7)
11

这有效,因为

函数是一流的对象。在函数定义中执行的“def”语句定义了一个可以返回或传递的本地函数。嵌套函数中使用的自由变量可以访问包含 def 的函数的局部变量。[1]

另请参阅:命名和绑定


推荐阅读