【问题标题】:Python. Another bracket next to a functionPython。函数旁边的另一个括号
【发布时间】:2019-03-14 01:47:54
【问题描述】:

我的代码如下。

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),那就很容易了。

谁能简明扼要地解释一下它是什么以及它是如何工作的?

非常感谢您。

【问题讨论】:

标签: python function brackets


【解决方案1】:

两者似乎都是实现__call__() 的类。然后BatchNormalization() 创建一个实例,(x) 在该实例上调用.__call__(x)

【讨论】:

    【解决方案2】:

    不确定是不是这样,但如果第一个调用的对象返回另一个函数,则语法是可能的。

    考虑这段代码:

    def f(arg):
        print(arg)
    
    def g():
        return f
    
    x = "hi"
    
    g()(x)  # equivalent to f(x), since f is what g returns
    

    注意g() 返回函数f 而不实际执行它,这就是greturn 语句中没有括号的原因。

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多