当以 f(x)(y) 格式调用 Python 函数时,这意味着什么?

What does it mean when a Python function is called in the format f(x)(y)?

在这个article中,下面这行代码给出了一个例子:

 x = layers.Dense(64, activation="relu", name="dense_1")(inputs)

这似乎是一个函数调用,首先传入 64,然后传入两个命名参数,然后传入 input

这是怎么回事? inputs 是传递给 layers.Dense 还是其他东西?

函数“Dense”return是可调用的,由第二对括号调用。

例如:

def function1():
    return function2

def function2():
    print('Function 2')

x = function1()
x() # This will print "Function 2"

也可以returnclass。在这种情况下,括号将调用构造函数,从而创建 class.

的实例
def function1():
    return SomeClass

class SomeClass:
    def __init__(self):
        print("__init__")

x = function1()
x() # This will print "__init__"

您基本上是为另一个函数(包装函数)返回的函数提供参数,也称为内部函数

def funcwrapper(y):
    def addone(x):
        return x + y + 1
    return addone

print(funcwrapper(3)(2))

输出:

6