我现在正在学习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'
答案 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)
。