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()
  • 相关阅读:
    hdu 1175
    hdu 2197
    STL的学习
    数据结构之线性结构栈
    Linux下Fork与Exec使用
    散列技术之哈希
    检索之二分检索
    检索之顺序检索
    程序员该怎样放松?8个好网站推荐
    外部碎片和内部碎片的区别
  • 原文地址:https://www.cnblogs.com/kissfire008/p/11749710.html
Copyright © 2011-2022 走看看