Возврат 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