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
  • 相关阅读:
    kettle的转换组件
    kettle的输出组件
    js的touch事件的实际引用
    touchstart,touchmove,touchend触摸事件的小小实践心得
    Android使用ViewPager实现左右循环滑动及轮播效果
    jQuery漂亮图标的垂直导航菜单
    c#使用WebClient登录网站抓取登录后的网页
    从网页抓取数据的一般方法
    c#通过oledb获取excel文件表结构信息
    c#中高效的excel导入sqlserver的方法
  • 原文地址:https://www.cnblogs.com/bigbox/p/11854467.html
Copyright © 2011-2022 走看看