Python之路,Day4 - Python基础4 (new版)

  • 装饰器
user_status = False #用户登录后改为True

def login(func): #传入想调用的函数名

    def inner():
        _username = 'alex'  #假装这是DB里存的用户信息
        _password = 'abc!23'  #假装这是DB里存的用户信息
        global user_status

        if user_status == False:
            username = input('user:')
            password = input('password:')

            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('----首页----')

def america():
    print('----欧美专区----')

def japan():
    print('----日韩专区----')

@login  #相当于henan = login(henan) ,返回inner
def henan():
    print('----河南专区----')

henan()
  •  装饰带参数的函数  支持多个参数
user_status = False #用户登录后改为True

def login(func): #传入想调用的函数名

    def inner(*args,**kwargs):
        _username = 'alex'  #假装这是DB里存的用户信息
        _password = 'abc!23'  #假装这是DB里存的用户信息
        global user_status

        if user_status == False:
            username = input('user:')
            password = input('password:')

            if username == _username and password == _password :
                print('welcome login...')
                user_status = True
            else:
                print('wrong username or password!')
        else:
            print('用户已登录,验证通过...')

        if user_status:
            func(*args,**kwargs)  #执行传入的函数名的函数

    return inner  #返回内层函数的内存地址

def home():
    print('----首页----')

def america():
    print('----欧美专区----')

@login
def japan():
    print('----日韩专区----')

@login  #相当于henan = login(henan) = inner
def henan(style):
    print('----河南专区----',style)

henan('3p')
japan()
  •  装饰器带参数
user_status = False #用户登录后改为True

def login(author_type): #传入想调用的函数名
    def outer(func):
        def inner(*args,**kwargs):
            _username = 'alex'  #假装这是DB里存的用户信息
            _password = 'abc!23'  #假装这是DB里存的用户信息
            global user_status

            if user_status == False:
                username = input('user:')
                password = input('password:')

                if username == _username and password == _password :
                    print('welcome login...')
                    user_status = True
                else:
                    print('wrong username or password!')
            else:
                print('用户已登录,验证通过...')

            if user_status:
                func(*args,**kwargs)  #执行传入的函数名的函数

        return inner  #返回内层函数的内存地址
    return outer

def home():
    print('----首页----')

def america():
    print('----欧美专区----')

@login('wx')
def japan():
    print('----日韩专区----')

@login('qq')  #相当于 xx = login('qq') = outer, henan = xx(henan) = inner
def henan(style):
    print('----河南专区----',style)

henan('3p')
japan()