【发布时间】:2019-01-22 16:36:58
【问题描述】:
我现在正在学习 Python,我只是想掌握所有的语法选项。
目前,我似乎无法搜索到的唯一一件事是,如果我出于某种原因想要定义一个包含多个其他定义的函数,该怎么办。
虽然我知道如果较大的定义内只有 1 个定义该怎么办(如果排除下面的第二个定义,则 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'
【问题讨论】:
-
如果你想让
f返回x返回y,你必须嵌套更深。目前y甚至从未被定义,因为您在到达它之前return x。 -
这不是语法问题,而是语义问题。准确地理解你想要做什么,并且语法几乎是不言自明的。您希望
f返回一个也返回一个函数的函数;即,y在x内部定义并由x返回,而不是f。
标签: python function closures nested-function