Python 装饰器相关知识

  • 登录认证,用得比较多,还有各类日志。 模拟博客园登录,需求:在访问每个功能模块之前必须先验证是否已经登录,没有登录不让访问,如没有账号就注册一个再登录,三次登录不成功就退出整个程序。
status_dict = {  # 登录用户状态
    'username': None,
    'status': False,
}

def get_usr_pwd():
    pass

def register():
    pass

def login():  # 登录模块,登录3次不成功则退出
    pass

def auth(f):  # 装饰器模板
    def inner(*args, **kwargs):
        if status_dict['status'] == False:          # 如果登录状态为假,则进入登录模块
            status_dict['username'],status_dict['status'] = login()         # 调用登录模块并接收登录状态
            if status_dict['status'] == True:       # 如果登录成功,则运行被装饰函数
                ret = f(*args, **kwargs)
        else:
            ret = f(*args, **kwargs)
        return ret
    return inner

@auth   # article=auth(article)
def article():
    print(f'欢迎{status_dict["username"]},访问文章页面。')

@auth
def comment():
    print('欢迎访问评论页面')

@auth
def dariy():
    print(f'欢迎{status_dict["username"]},访问日记页面。')

article()
comment()
dariy()

Original: https://www.cnblogs.com/amwkvi/p/14030543.html
Author: amwkvi
Title: Python 装饰器相关知识

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643547/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球