zoukankan      html  css  js  c++  java
  • day12.2_完善装饰器

    一、无参

    1.定义 timmer 函数

    2.将函数 foo 当作timmer函数的参数传给func

    3.定义wrapper 函数

    4.返回 wrapper 函数的内存地址

    5.此时的 foo 就是 wrapper 的内存地址,加上()之后就开始执行wrapper下的代码

    6-10.在时间运行开始至结束这段时间内,中间需要打印输出 “foo” 后睡眠 2S,至输出完毕之后,得到一个停止的时间,并且输出打印出从运行开始到运行结束这段时间的时间戳

    二、有参装饰器

    current_user={"user":None}
    def auth(engine=""file):
        def deco(func):
            def wrapper(*args,**kwargs):
                if current_user["user"]:      #用户已经登录
                    res=func(*args,**kwargs)
                    return res
                name=input("username:").strip()
                pwd=input("password:").strip()
                if engine=="file":
                with open("file.txt","r",encoding=""utf-8) as f:
                    for line in f:
                        line=line.strip("
    ").split(":")
                        if name==line[0] and pwd==line[1]:
                            print("login successful...")
                            current_user["user"]=user   #登录成功储存用户状态
                            res=func(*args,**kwargs)
                            return res
                        else:
                            print("error")
                  elif engine=="mysql":
                      print("mysql")
                  else:
                      print("无效语法"return wrapper
        return deco
    @auth(engine="file")
    def foo():
        pirnt("hlello")
        time.sleep(1)
    foo
  • 相关阅读:
    C#在WebApi 中使用Redis 的方法
    IList<> IEnumerable<> ReadOnlyCollection<> 使用方向
    winform DateTimePicker 设置成秒
    vs 在高分屏下开发 winform 配置
    eclipse spring插件
    request方法
    Nexus添加中央仓库
    eclipse 安装velocity插件
    java >> << .>>> 计算详解
    SheetJS 入门案例
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9170788.html
Copyright © 2011-2022 走看看