Function(params ...)(params)在python中做什么?

时间:2019-01-04 09:29:36

标签: python keras

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

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

/** * Update column dimensions when inserting/deleting rows/columns. * * @param Worksheet $pSheet The worksheet that we're editing * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') * @param int $beforeColumnIndex Index number of the column we're inserting/deleting before * @param int $pNumCols Number of columns to insert/delete (negative values indicate deletion) * @param int $beforeRow Number of the row we're inserting/deleting before * @param int $pNumRows Number of rows to insert/delete (negative values indicate deletion) */ protected function adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) { $aColumnDimensions = array_reverse($pSheet->getColumnDimensions(), true); if (!empty($aColumnDimensions)) { foreach ($aColumnDimensions as $objColumnDimension) { $newReference = $this->updateCellReference($objColumnDimension->getColumnIndex() . '1', $pBefore, $pNumCols, $pNumRows); list($newReference) = Coordinate::coordinateFromString($newReference); if ($objColumnDimension->getColumnIndex() != $newReference) { $objColumnDimension->setColumnIndex($newReference); } } $pSheet->refreshColumnDimensions(); } }

在这种情况下,似乎Function会在应用新更改之前考虑到x之前所做的操作。

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

1 个答案:

答案 0 :(得分:1)

这只是一个返回您立即调用的函数的函数。您可以执行相同操作:

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

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

>>> add(4)(7)
11

之所以可行,是因为

  

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

另请参阅:[1]