# -*- coding: utf-8 -*-
import re
value = re.compile(r'^(-?[0-9]\d*)(\.\d+|\d*)$') # 匹配规则(int or float)
def logger(f):
'''参数日志装饰器'''
def inner(*args, **kwargs):
print(f'params --> args: {args}, kwargs: {kwargs}')
return f(*args, **kwargs)
return inner
def validators(f):
'''参数数字类型校验装饰器'''
def inner(*args, **kwargs):
r = [i for i in args if not value.match(str(i))]
k = [i for i in kwargs.values() if not value.match(str(i))]
if len((r + k)) > 0:
print(f'参数类型错误: {r + k}')
return '参数校验失败,检查参数'
temp_dict = dict()
for i, v in kwargs.items():
temp_dict[i] = float(v)
kwargs.update(temp_dict)
args = [float(i) for i in list(args)]
return f(*args, **kwargs)
return inner
@logger
@validators
def func_test(*args, **kwargs):
return sum(args) + sum(kwargs.values())
if __name__ == '__main__':
result = func_test(*(1, 2), **{'z': 'z'})
print(result)
python 装饰器的简单使用
最新推荐文章于 2024-07-12 16:16:27 发布