当以 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
在这个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