x = Flatten()(vgg.output)
variable = function (variable)
我在python中找不到这种类型的表达式,谁能帮我理解上面的表达式
提前致谢
这里的Flatten()
函数返回另一个函数,该函数将vgg.output
作为参数。发生这种情况是因为 python 中的所有内容都是第一类对象。因此,您可以返回一个函数作为函数的返回值。举个例子就清楚了:
假设我们有一个函数square
它返回一个数字的平方:
def square(number):
return number**2
因此,在数字上调用平方会得到:
>>> square(3)
9
现在,让我们定义另一个返回square
函数的函数,并且只返回函数:
def return_func():
return square
调用return_func
我们将返回square
函数:
>>> some_func = return_func()
>>> some_func
<function __main__.square(number)>
>>> some_func == square == return_func()
True
所以调用square(number)
应该等价于return_func()(number)
,即
>>> return_func()(3)
9
所以在你的例子中,Flatten()
等效于return_func()
,number
等效于vgg.output
。
x = Flattern()
正在调用此函数并将返回的数据分配给x
。
v = function
像v
是function
别名。你可以v()
来称呼它。
Python 对内部函数有特殊的语法。
def Flatten()(vgg.output):
pass
基本相同:
def Flatten():
def inner(vgg.output):
pass