多重闭包的问题是该怎么处理

编写函数add,使表达式add(1)(2)(3)……(n)()返回值是1+2+……n,用闭包函数

def add(n):
    def sub(*m):
        nonlocal n
        if len(m)>0:
            n+=m[0]
            return sub
        else:
            return n
    return sub

好问题,感觉稍微有点不够严谨。假如n=3,请参考:

>>> def add(a):
    def inner_func_1(b):
        def inner_func_2(c):
            def inner_func_3():
                return a + b + c
            return inner_func_3
        return inner_func_2
    return inner_func_1

>>> add(1)(2)(3)()
6