zoukankan      html  css  js  c++  java
  • day04_02 装饰器 高阶版

    __author__ = "Alex Li"
    
    """
    import time
    user,passwd = 'alex','abc123'
    def auth(auth_type):
        print("auth func:",auth_type)
        def outer_wrapper(func):
            def wrapper(*args, **kwargs):
                print("wrapper func args:", *args, **kwargs)
                if auth_type == "local":
                    username = input("Username:").strip()
                    password = input("Password:").strip()
                    if user == username and passwd == password:
                        print("\033[32;1mUser has passed authentication\033[0m")
                        res = func(*args, **kwargs)  # from home
                        print("---after authenticaion ")
                        return res
                    else:
                        exit("\033[31;1mInvalid username or password\033[0m")
                elif auth_type == "ldap":
                    print("搞毛线ldap,不会。。。。")
    
            return wrapper
        return outer_wrapper
    
    def index():
        print("welcome to index page")
    
    @auth(auth_type="local") # home = wrapper()
    def home():
        print("welcome to home  page")
        return "from home"
    
    @auth(auth_type="ldap")
    def bbs():
        print("welcome to bbs  page")
    
    index()
    print(home()) #wrapper()
    bbs()
    """
    
    
    import time
    user,passwd = 'alex','abc123'
    
    def auth(auth_type):
        print("auth func:", auth_type)
        def outer_wrapper(func):
            def wrapper(*args,**kwargs):
                if auth_type == "local":
                    print("wrapper func args:", *args,**kwargs)
                    username = input("Username:").strip()
                    password = input("Password:").strip()
    
                    if user == username and password == password:
                        print("\033[32;1mUser has passed authentication\033[0m")
                        # func(*args,**kwargs)    #from home
                        res = func(*args, **kwargs)  # res from home()
                        print("---after authenticaion ",res)
                        return res
                    else:
                        exit("\033[31;1mInvalid username or password\033[0m")
                elif auth_type == "ldap":
                    print("搞毛线ldap,不会。。。。")
            return wrapper
        return outer_wrapper
    
    
    def index():
        print("welcome to index page")
    @auth(auth_type="local")    #1.home = auth() 2.home = wrapper()
    def home():
        print("welcome to home  page")
        return "from home"
    
    @auth(auth_type="ldap")
    def bbs():
        print("welcome to bbs  page")
    
    index()
    home()  #3.wrapper()
    bbs()
    
  • 相关阅读:
    Win10 iot 配置防火墙限制应用部署
    未能加载文件或程序集“********”或它的某一个依赖项。试图加载格式不正确的程序。
    IIS 支持 m3u8
    UWP WebView 禁用缩放
    Code First
    关于 永恒之蓝 和 MS17-010 补丁
    《 罗辑思维 成大事者不纠结》读书笔记
    <王川自选集第一卷电子书 >读书笔记
    <王二的经济学故事>读书笔记
    <以交易为生>读书笔记
  • 原文地址:https://www.cnblogs.com/netflix/p/14854388.html
Copyright © 2011-2022 走看看