zoukankan      html  css  js  c++  java
  • 装饰器常用形态(结合装饰器起飞版来看)

    在inner()函数中:                                                                                       #  结合装饰器起飞版来看

    1.inner()函数中,在被装饰函数之前添加新功能(执行)                             如 用户登录

    2.inner()函数中,在被装饰函数之后添加新功能(执行)                             如 关闭浏览器,断开数据库连接

    3.被装饰函数的前后都添加新功能(执行)                                                       如 用于统计被装饰函数的花费时间

    4.inner()函数中,未添加任何新的功能,直接引用原函数,就相当于空装饰器,

        调用被空装器装饰的函数就是调用原函数自己     如:登录装饰器,避免重复登录  (例题待更新

    例题:用户登录装饰器  执行使用其它功能前必须先登录 

    def  login(func):
        # 2、启动购物程序前,必须要先登录  def login   读文件 做对比   装饰器
        def inner():
            if not islogin:
                uname = input('请输入登录名:').strip()
                pword = input('请输入密码:').strip()
                with open('a.txt','r',encoding='utf-8') as f2:
                    for line in f2:     #这里存入json 文件比较好判断
                        line = line.strip('
    ')   # line = ['seen','123456']
                        line = line.split('|')
                        if uname == line[0] and pword == line[1]:
                            print('登录成功')
                            return func()         #结束当前函数体
                    else:
                        print('你输入的用户名或密码不正确')
            else:
                func()                 #如果登录成功则执行返回空装饰器,被装饰的函数执行函数本身
        return inner
  • 相关阅读:
    JavaScript数字精度丢失问题总结
    前端开发调试线上代码的两款工具
    微信公众账号开发入门
    Chrome/Firefox 中头toFixed方法四舍五入兼容性问题
    GIT/node使用
    addEventListener 的另类写法
    JavaScript 动态插入 CSS
    JavaScript判断各浏览器CSS前缀的两种方式
    流程办理操作说明
    流程设计器(2)
  • 原文地址:https://www.cnblogs.com/bigbox/p/11854467.html
Copyright © 2011-2022 走看看