函数装饰器

装饰器又称语法糖,以下代码是装饰器没有简写之前:

# __*__ coding: utf-8 __*__
__author__ = "David.z"
user_status = False
def login(func):
    def inner():#嵌套函数
        _username = "alex"  # 假装这个DB里存的用户信息
        _password = "abc123"  # 假装这是DB里存的用户密码
        global user_status

        if user_status == False:
            username = input("user:").strip()
            password = input("password:").strip()

            if username == _username and password == _password:
                print("welcome login...")
                user_status = True
            else:
                print("wrong username or password!")
        else:
            print("用户已登录,验证通过。。。")
        if user_status:
            func()
    return inner
def home():
    print("首页".center(15,"*"))
def america():
    print("欧美专区".center(15, "*"))
def japan():
    print("日韩专区".center(15,"*"))
def henan():
    print("河南专区".center(15,"*"))
henan = login(henan) #inner

print(henan) #打印出来看看是不是内存地址
henan() #加上()执行函数

以下代码是简写之后:

唯一区别就是在装饰的时候用@login

# __*__ coding: utf-8 __*__
__author__ = "David.z"
user_status = False
def login(func):
    def inner():#嵌套函数
        _username = "alex"  # 假装这个DB里存的用户信息
        _password = "abc123"  # 假装这是DB里存的用户密码
        global user_status

        if user_status == False:
            username = input("user:").strip()
            password = input("password:").strip()

            if username == _username and password == _password:
                print("welcome login...")
                user_status = True
            else:
                print("wrong username or password!")
        else:
            print("用户已登录,验证通过。。。")
        if user_status:
            func()
    return inner
def home():
    print("首页".center(15,"*"))
def america():
    print("欧美专区".center(15, "*"))
def japan():
    print("日韩专区".center(15,"*"))
@login
def henan():
    print("河南专区".center(15,"*"))
# henan = login(henan) #inner
#
# print(henan) #打印出来看看是不是内存地址
henan() #加上()执行函数

猜你喜欢

转载自www.cnblogs.com/davidz/p/9143961.html
今日推荐