这更像是脑筋急转弯,而不是实际行动。我已经创建了一个相互堆叠的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 .......发布于 2018-02-09 05:24:08
这段代码的问题是不能调用函数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发布于 2018-02-09 05:21:27
你需要每个函数返回它的“子”函数,然后保留对它的引用,以便在下一步调用-类似于:
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))发布于 2018-02-09 05:23:02
正如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 == 6https://stackoverflow.com/questions/48694905
复制相似问题