рекурсия и замыкания в python3 - PullRequest
0 голосов
/ 18 июня 2020

env 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

Я хочу вернуть значение x , но не None, даже если напечатано значение

1 Ответ

1 голос
/ 18 июня 2020

Возврат b(). В первый раз, когда вы вызываете b, он достигает b(), но ничего не возвращает, поэтому ваше окончательное возвращаемое значение - 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
...