首页 > 解决方案 > 在括号后将参数传递给函数

问题描述

我在用 Python 理解这段代码时遇到问题

x = layers.Flatten()(last_output)

既然Flatten是一个函数,那么函数如何从写在函数调用括号外的last_output获取数据。不记得在 Java 中看到过这种代码。

谢谢并恭祝安康

标签: pythonfunctiontensorflowcall

解决方案


Flatten() 是类实例化(您可能很清楚),第二个使用该参数调用实例。为此,该类必须__call__定义一个函数。

例子:

class Sum:
    def __call__(self, a, b, c):
        return a + b + c

s = Sum()
print(s(3, 4, 5))
print(Sum()(3,4,5))

使用返回另一个带参数的函数的函数也可以获得相同的行为:

def Sum2():
    def Sum3(a, b, c):
        return a + b + c
    return Sum3

s2 = Sum2()
print(s2(3, 4, 5))
print(Sum2()(3, 4, 5))

推荐阅读