Внутренняя функция не возвращает ожидаемое вами значение, потому что ... она не return
. Вместо этого он неявно возвращает None, как Python функции, когда они достигают конца потока управления.
Вы можете редактировать внутреннюю функцию, возвращая f(a, b)
в обычном случае:
def check(fun):
def inner_fun(a,b):
if b == 0:
print("0 is not valid")
return # implicitly returns None
return fun(a,b) # note return
return inner_fun