我已经写了这段代码,但我的输出是 'None' ,为什么不来正确的输出
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
。None
如果任何参数不是 type ,它仍然会返回int
。因此,有意义地处理这种情况,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句