这更像是一个脑筋急转弯,而不是一个实际的行为。我创建了一个相互堆叠的3层功能。我不能告诉python只用最里面的函数将3个给定的数字参数加在一起,任何人都可以帮忙吗?
def first(x):
def second(y):
def third(z):
return(x+y+z)
return third
third1 = first(1)
third2 = second(2)
....... get stuck here .......
答案 0 :(得分:2)
你需要每个函数返回它的'子'函数,然后保持对它的引用,然后在下一步调用 - 比如:
def first(x):
print(x)
def second(y):
print(y)
def third(z):
print(z)
return(x+y+z)
return third
return second
two = first(1)
three = second(2)
print(three(3))
答案 1 :(得分:2)
此代码的问题是无法调用函数second
。它与尝试调用它的代码不在同一个词法范围内。
有效的示例:
def first(x):
def second(y):
def third(z):
return x+y+z
return third
return second
f = first(1)
s = f(2)
print s(4) # 6
答案 2 :(得分:0)
就像second
需要返回third
一样,first
需要返回second
。
def first(x):
def second(y):
def third(z):
return(x+y+z)
return third
return second
此外,您无法直接致电second
,因为这是first
的本地名称。您需要调用first
的返回值:
f1 = first(1) # f1 is second wrapped around x == 1
f2 = f1(2) # f2 is third wrapped around x == 1 and y == 2
f3 = f2(3) # f3 is 1 + 2 + 3 == 6