python3 中的递归和闭包

recursion and closures in python3

环境 python 3.8.2 我无法获得值 var return

def a(x):
    def b():
        nonlocal x
        if x>2:
            print(x)
            return x
        x = x + 1
        b()
    return b

print(a(1)())

结果是

4
None

我想 return x 的值,但不是 None,即使打印的值

Returnb()。第一次调用 b 时,它到达 b() 但 return 什么都没有,所以你的最终 return 值为 None.

def a(x):
    def b():
        nonlocal x
        if x>2:
            print(x)
            return x
        x = x + 1
        return b()
    return b

print(a(1)())
> 3
> 3