您现在的位置是:网站首页 > 博客日记 >

python装饰器之数据验证

作者:YXN-python 阅读量:82 发布日期:2023-02-28

代码1:检查参数是否为数字

import numbers

def check_if_number(func):
    def wrapper(*args, **kwargs):
        # 此处书写验证逻辑 start
        for arg in args:
            if not isinstance(arg, numbers.Number):
                raise TypeError(f"参数必须是数字,但接收到的是 {type(arg).__name__}")
        # 此处书写验证逻辑 end
        return func(*args, **kwargs)
    return wrapper

@check_if_number
def add(a, b):
    return a + b

代码2:检查是否为管理员

def admin_required(func):
    def wrapper(*args, **kwargs):
        if not user_is_admin():
            raise Exception("用户不是管理员,无法执行操作。")
        return func(*args, **kwargs)
    return wrapper

@admin_required
def sensitive_function():
    print("执行敏感操作。")

def user_is_admin():
    # 这里应该是检查用户是否为管理员的逻辑
    return True

sensitive_function()

YXN-python

2023-02-28