在括号后将参数传递给函数
Passing arguments to function after parenthesis
我无法理解 Python
中的这段代码
x = layers.Flatten()(last_output)
既然Flatten是一个函数,那么函数调用括号外写的last_output如何获取数据呢。不记得在 Java.
中看到过这种代码
感谢和问候
考虑一下
def outer():
def print_thrice(string):
for _ in range(3):
print (string)
return print_thrice
如果您调用 outer
,它将 return 然后您可以调用的 print_thrice
函数。所以你会像这样使用它
x = outer()
x("hello")
或者更简洁地说,outer()("hello")
这就是这里发生的事情。
Flatten() 是 class 实例化(您可能很清楚),第二个使用该参数调用实例。为此,class 必须定义一个 __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))
同样的行为也可以通过 returns 另一个带参数的函数获得:
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))
我无法理解 Python
中的这段代码x = layers.Flatten()(last_output)
既然Flatten是一个函数,那么函数调用括号外写的last_output如何获取数据呢。不记得在 Java.
中看到过这种代码感谢和问候
考虑一下
def outer():
def print_thrice(string):
for _ in range(3):
print (string)
return print_thrice
如果您调用 outer
,它将 return 然后您可以调用的 print_thrice
函数。所以你会像这样使用它
x = outer()
x("hello")
或者更简洁地说,outer()("hello")
这就是这里发生的事情。
Flatten() 是 class 实例化(您可能很清楚),第二个使用该参数调用实例。为此,class 必须定义一个 __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))
同样的行为也可以通过 returns 另一个带参数的函数获得:
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))