我们可以从1个外部函数返回2个内部函数吗?

时间:2020-11-07 16:40:13

标签: python closures iterable-unpacking

我有一个函数 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:无法解压缩不可迭代的函数对象

2 个答案:

答案 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()))