zoukankan      html  css  js  c++  java
  • 第二模块 3.11 函数的进阶-装饰器

    def plus(n):
         return n+1
    plus2 = lambda x : x+1
    calc = plus()
    print(calc(10))
    account = {
        "is_authenticated":False,# 用户登录了就把这个改成True
        "username":"alex", # 假装这是DB里存的用户信息
        "password":"abc123" # 假装这是DB里存的用户信息
    }
    
    def login(func):
    
        def inner( *args, **kwargs ):
            if account["is_authenticated"] is False:
                username = input("user:")
                password = input("pasword:")
                if username == account["username"] and password == account["password"]:
                    print("welcome login....")
                    account["is_authenticated"] = True
                    func(*args, **kwargs)  #认证成功,执行功能函数
                else:
                    print("wrong username or password!")
            else:
                print("用户已登录,验证通过...")
                func(*args, **kwargs)  # 认证成功,执行功能函数
    
        return inner
    
    def home():
        print("---首页----")
    
    
    
    @login   # 装饰器, 语法糖
    def america():
        #login()  # 执行前加上验证
        print("----欧美专区----")
    def japan():
        print("----日韩专区----")
    
    @login
    def henan(vip_level):
        #login()  # 执行前加上验证
        if vip_level >3 :
            print("解锁本专区所有视频!")
        else:
            print("-----河南专区------")
        print("----河南专区----")
    
    
    # america = login(america)   #返回inner 的内存地址
    # henan = login(henan)
    
    home()
    america( )       #inner()
    henan( 4)   # inner()
  • 相关阅读:
    bzoj 1497: [NOI2006]最大获利
    bzoj 2733: [HNOI2012]永无乡
    [CF911G]Mass Change Queries
    [CF911F]Tree Destruction
    [CF911E]Stack Sorting
    [CF911D]Inversion Counting
    [CF911C]Three Garlands
    [CF911B]Two Cakes
    [CF911A]Nearest Minimums
    [POJ1201]Intervals
  • 原文地址:https://www.cnblogs.com/kissfire008/p/11749710.html
Copyright © 2011-2022 走看看