对于这个带有参数化函数的python验证装饰器,有没有更好的方法?

2024-09-30 22:12:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我第一次尝试创建一个decorator来验证参数化函数中的值,我希望有更好的方法来实现这一点

当我开始学习装饰器时,我发现很难处理作为装饰目标的函数中的参数。我很确定有更好的方法可以做到这一点,我知道你会提供的

def noZeroFarParamOne(func):
    def domore(*args,**kwargs):
        for i in args[1:]:
            if i == 0:
                print('No valid to divide by zero.')
                result = func(None)
                return result                

        return func(*args,**kwargs)

    return domore        

@noZeroFarParamOne
def divide(*num):
    print('amount of params are:',len(num))
    if len(num) > 0:        
        div = num[0]
        if len(num) == 1:
            return div
    else:
        return None

    for i in num[1:]:
        div =  div/i
    return div

print(divide(8,4,2))

print(divide(2,0))

什么是Pythonic方式(有经验的Python开发人员)来完成我作为初学者所做的事情


Tags: 方法函数div参数lenreturnifdef