Python 我使用的是Decorators,但它不返回任何值,为什么?

Python 我使用的是Decorators,但它不返回任何值,为什么?,python,python-3.x,decorator,Python,Python 3.x,Decorator,我已经编写了这段代码,但是我的输出为“无”,为什么不提交正确的输出呢 def decor_func(any_func): def wrapper_func(*args , **kwargs): if all([type(arg) == int for arg in args]): any_func(*args , **kwargs) return wrapper_func @decor_func def add(*args):

我已经编写了这段代码,但是我的输出为“无”,为什么不提交正确的输出呢

def decor_func(any_func):
      def wrapper_func(*args , **kwargs):
        if all([type(arg) == int for arg in args]):
              any_func(*args , **kwargs)

  return wrapper_func

@decor_func
def add(*args):
    total = 0
    for i in args:
        total += i

    return total


print(add(1, 2, 5, 6))

包装器函数不返回任何内容:

def decor_func(any_func):
    def wrapper_func(*args , **kwargs):
        if all([type(arg) == int for arg in args]):
            return any_func(*args , **kwargs)  # return the result!
    return wrapper_func
不返回隐式返回
None
。如果任何参数的类型不是
int
,它仍将返回
None
。因此,有意义地处理这种情况,使用
isinstance
进行类型检查,并使用生成器表达式而不是列表理解将是3个进一步的改进:

def decor_func(any_func):
    def wrapper_func(*args):
        if all(isinstance(arg, int) for arg in args):
            return any_func(*args , **kwargs)
        raise TypeError
    return wrapper_func