两层的装饰器,这里对于register不需要进行输入

usename, passwd = 'alex', 'abc123'
def register(func):
    def wrapper(*args, **kwargs):
        username = input('usename:').strip()
        passward = input('passward:').strip()
        if username == usename and passward == passwd:
            return func(*args, **kwargs)

    return wrapper

@ register
def index():
    print('1')
    return 'ok'

print(index())

 

装饰器主要使用的是 test = submit(test), 在函数中返回了submit的函数,因此需要再嵌套一个函数,用来进行返回submit的函数地址

import time

usename, passwd = 'alex', 'abc123'

def submit(register_type):
    def register(func):
        def wrapper(*args, **kwargs):
            if register_type == 'login':
                username = input('usename:').strip()
                passward = input('passward:').strip()
                if username == usename and passward == passwd:
                    res = func()
                    return res
                else:
                    print('the usename is error or passward is error')
                    username = input('usename:').strip()
                    passward = input('passward:').strip()
        return wrapper
    return register

@ submit(register_type='login')  # index = submit(register_type)
def index():
    print('this is index')
    return 'yes'

print(index())

 

posted on 2019-09-04 10:59  python我的最爱  阅读(466)  评论(0编辑  收藏  举报