第二模块 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()
原文地址:https://www.cnblogs.com/kissfire008/p/11749710.html