装饰器 范例代码

本文深入探讨Python装饰器的概念,通过多个实际示例展示如何使用装饰器来增强函数功能,包括日志记录、性能测试及权限验证等应用场景。
摘要由CSDN通过智能技术生成

account = {'authenticated':False, # 用户登录改为True
           'username':'Alex',        # 存的用户
           'code':'123'             #用户密码
           }

def login():

    if account['authenticated'] == False:
        username = input("请输入账户》》")
        code = input("请输入密码》》")
        if username ==account['username']  and account['code'] == code:
            account['authenticated'] = True
        else:
            print("请重新输入。。")

    else:
        print("已经登陆成功".center(20,'-'))

login()


account = {
    "is_authenticated":False,# 用户登录了就把这个改成True
    "username":"alex", # 假装这是DB里存的用户信息
    "password":"abc123" # 假装这是DB里存的用户信息
}
def login(func):
    if account["is_authenticated"] is False:
        username = input("user:")
        password = input("pasword:")
        if username == account["username"] and password == account["password"]:
            print("welcome login....")
            account["is_authenticated"] = True
        else:
            print("wrong username or password!")
    if account["is_authenticated"] is True:  # 主要改了这
        func() # 认证成功了就执行传入进来的函数
def home():
    print("---首页----")
def america():
    print("----欧美专区----")
def japan():
    print("----日韩专区----")
def henan():
    print("----河南专区----")
home()
login(america) # 需要验证就调用 login,把需要验证的功能 当做一个参数传给login
login(henan)
666
account = {
    "is_authenticated":False,# 用户登录了就把这个改成True
    "username":"alex", # 假装这是DB里存的用户信息
    "password":"abc123" # 假装这是DB里存的用户信息
}
def login(func):
    def inner(*args,**kwargs): # 再定义一层函数
        if account["is_authenticated"] is False:
            username = input("user:")
            password = input("pasword:")
            if username == account["username"] and password == account["password"]:
                print("welcome login....")
                account["is_authenticated"] = True
            else:
                print("wrong username or password!")
        if account["is_authenticated"] is True:
            func(*args,**kwargs)
    return inner  # 注意这里只返回inner的内存地址,不执行
def home():
    print("---首页----")
@login
def america():
    print("----欧美专区----")
def japan():
    print("----日韩专区----")
@login
def henan(vip_level):
    if vip_level < 3:
        print("----河南专区普通会员----")
    else:
        print("欢迎来到尊贵河南口音RMB玩家私密社区".center(50,"-"))
        print("再充值500就可以获取演员微信号,幸福大门即将开启".center(50," "))
# home()
# america = login(america) # 这次执行login返回的是inner的内存地址 .inner at 0x101762840>
# henan = login(henan)  # .inner at 0x102562840>
america()  # 相当于执行inner()
henan(5)








def home():
    print("首页".center(20,'-'))
def america():
    print('欧美专区'.center(20,'-'))
def japan():
    print('日韩专区'.center(20,'-'))
def henan():
    print('河南专区'.center(20,'-'))


home()
america()
japan()
henan()
装饰器Python中一种特殊的语法,它可以用来修改或者增强函数或者类的功能。在接口自动化测试中,装饰器可以用来对接口进行一些额外的处理或者记录相关信息。装饰器可以在不修改原有代码的情况下,给函数或者类添加一些额外的功能,比如日志记录、性能统计、权限验证等。通过装饰器,我们可以将这些功能与原有的接口代码分离开来,使得代码更加清晰和可维护。 范例:<<引用:这个类装饰器还不支持接收参数,后面我们实战的装饰器时可以支持结束参数的。 装饰器在接口自动化测试项目中应用 。>> 在接口自动化测试中,装饰器可以用来对接口函数进行一些额外的处理,比如添加日志、记录请求和响应信息等。下面是一个简单的装饰器示例: ```python def log_decorator(func): def wrapper(*args, **kwargs): print("调用接口前的操作") result = func(*args, **kwargs) print("调用接口后的操作") return result return wrapper @log_decorator def api_request(): # 接口请求的具体逻辑 pass api_request() ``` 在上面的例子中,`log_decorator`是一个装饰器函数,它接收一个函数作为参数,并返回一个新的函数`wrapper`。`wrapper`函数在调用被装饰的函数之前和之后执行一些额外的操作,比如打印日志。通过在`api_request`函数上使用`@log_decorator`装饰器,我们可以在调用`api_request`函数时自动执行装饰器中定义的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值