我有一个函数 factory(将n作为变量初始化为零),其中有两个内部函数 current(返回n的值)和 counter(其中返回值n + 1)。
def factory(n=0):
def counter():
return n+1
return counter
def current():
return n
return current
f_current,f_counter=factory(int(input()))
我收到 TypeError:无法解压缩不可迭代的函数对象
答案 0 :(得分:2)
函数在遇到return语句后立即终止。因此,工厂函数在看到return counter
时终止。您可以如下进行更改(在定义完两个功能后返回)。
def factory(n=0):
def counter():
return n+1
def current():
return n
return current, counter
f_current,f_counter=factory(int(input()))
答案 1 :(得分:1)
是的,但是您只需要一个return语句。否则,第一个return语句将获胜,而第二个永不运行。这是一个示例:
def factory(n=0):
def counter():
return n+1
def current():
return n
return current, counter
f_current,f_counter=factory(int(input()))