具有多个嵌套函数的def函数的输入语法是什么?

时间:2019-01-22 16:36:58

标签: python function closures nested-function

我现在正在学习Python,而我只是想掌握所有语法选项。

目前,我似乎无法用谷歌搜索的唯一事情是,如果出于某种原因我想定义一个包含多个其他定义的函数,该怎么办。

虽然我知道较大的定义中只有1个定义时该怎么办(如果您排除下面的第二个def,则val = f()(3,4)返回7),我不知道如何正确使用下面的功能。

如果可能的话,其中具有任意数量的已定义函数的def函数的语法是什么?


代码:

def f():
    def x(a,b):
        return a + b
    return x
    def y(c,d):
        return c + d
    return y

 val = f()(3,4)(5,6)
 print(val)

我希望上面的代码返回(7,11)或11。但是,它返回'int object is not callable'

1 个答案:

答案 0 :(得分:0)

在编写val = f()(3,4)(5,6)时,您希望f返回一个函数,而 也返回一个函数;与更简单的多线通话进行比较:

t1 = f()
t2 = t1(3,4)
val = t2(5,6)

函数f定义并返回 还必须定义并返回可以使用2个参数调用的函数。因此,正如@jonrsharpe所说,您需要 more 嵌套:

def f():
    def x(a, b):
        def y(c, d):
            return c + d
        return y
    return x

现在,f()产生名为x的函数,而f()(3,4)产生名为y的函数(在过程中忽略其参数3和4),而{{ 1}}(最终)计算为f()(3,4)(5,6)