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