Python。函数旁边的另一个括号
Python. Another bracket next to a function
我有如下代码。
x = inputs
if conv_first:
x = conv(x)
if batch_normalization:
x = BatchNormalization()(x)
if activation is not None:
x = Activation(activation)(x)
在这里,我不明白 x = BatchNormalization()(x) 是如何工作的(就像一样, x = Activation(activation)(x) 也是)。如果是 BatchNormalization(x),那就简单了。
谁能简明扼要地解释一下它是什么以及它是如何工作的?
非常感谢您。
两者似乎都是 类 实现 __call__()
。然后 BatchNormalization()
创建一个实例并 (x)
在该实例上调用 .__call__(x)
。
不确定是否如此,但如果第一个调用对象 returns 另一个函数,语法是可能的。
考虑这段代码:
def f(arg):
print(arg)
def g():
return f
x = "hi"
g()(x) # equivalent to f(x), since f is what g returns
请注意 g()
returns 函数 f
并没有实际执行它,这就是 g
的 return
语句中没有括号的原因。
我有如下代码。
x = inputs
if conv_first:
x = conv(x)
if batch_normalization:
x = BatchNormalization()(x)
if activation is not None:
x = Activation(activation)(x)
在这里,我不明白 x = BatchNormalization()(x) 是如何工作的(就像一样, x = Activation(activation)(x) 也是)。如果是 BatchNormalization(x),那就简单了。
谁能简明扼要地解释一下它是什么以及它是如何工作的?
非常感谢您。
两者似乎都是 类 实现 __call__()
。然后 BatchNormalization()
创建一个实例并 (x)
在该实例上调用 .__call__(x)
。
不确定是否如此,但如果第一个调用对象 returns 另一个函数,语法是可能的。
考虑这段代码:
def f(arg):
print(arg)
def g():
return f
x = "hi"
g()(x) # equivalent to f(x), since f is what g returns
请注意 g()
returns 函数 f
并没有实际执行它,这就是 g
的 return
语句中没有括号的原因。