Python函数()()双括弧赋值

大家在神经网络中常会遇到这种情况
import Keras as K
x = K.Conv2D(128,(3,3),padding='same')(input)
这个是如何做到的呢?看下边的代码就ok了

这个很简单 就是用一个def 嵌套一个def 第二个def使用return执行。
当然,你也可以封装在class中 也是class的def中嵌套def,这种情况就是我们在神经网络中出现的这种情况。

class TestStage(object):
    def __init__(self,stageNumber):
        self.stageNumber = stageNumber
        
      
    def Stage1(self,ActiveStage='i am stage 1'):
        
        print (ActiveStage)
        
        #注意如果内置需要使用class初始化变量需要重新赋值
        stageNumber = self.stageNumber  
         
        #函数内的 内置函数 与常规函数一致,不使用self
        def numbersum(*arg):
            print (stageNumber)
            print (*arg)
            res_sum =  np.sum(*arg)
            res_mul =  np.multiply(*arg[0])
            return res_sum,res_mul
        
        #通过返回调用函数
        return numbersum
    
    
    def Stage2(self,ActiveStage='i am stage 2'):
        print (ActiveStage)

#实例化
STAGE = TestStage(stageNumber='second')

#调用类方法Stage2
STAGE.Stage2()
#输出OUT-》》  i am stage 2

#调用类方法Stage1
STAGE.Stage1(ActiveStage='ActiveStage')([2,2]) #第二个变量由内置函数接收

#输出
#OUT-》》ActiveStage
#OUT-》》second
#OUT-》》[2, 2]
#OUT-》》(4, 4)