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 并没有实际执行它,这就是 greturn 语句中没有括号的原因。