装饰器 范例代码

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值