zoukankan      html  css  js  c++  java
  • 一个完整的装饰器实例

    #_*_coding:utf-8_*_
    
     
     
    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("pasword:")
     
                if username == _username and password == _password:
                    print("welcome login....")
                    user_status = True
                else:
                    print("wrong username or password!")
     
            if user_status == True:
                func(*args,**kwargs) # 看这里看这里,只要验证通过了,就调用相应功能
     
        return inner #用户调用login时,只会返回inner的内存地址,下次再调用时加上()才会执行inner函数
     
     
    def home():
        print("---首页----")
     
    @login
    def america():
        #login() #执行前加上验证
        print("----欧美专区----")
     
    def japan():
        print("----日韩专区----")
     
    # @login
    def henan(style):
        '''
        :param style: 喜欢看什么类型的,就传进来
        :return:
        '''
        #login() #执行前加上验证
        print("----河南专区----")
     
    home()
    # america = login(america) #你在这里相当于把america这个函数替换了
    henan = login(henan)
     
    # #那用户调用时依然写
    america()
     
    henan("3p")
  • 相关阅读:
    文档加载完后执行相关事件
    流程步骤(备用)
    浏览器常见内核
    修改!important定义的样式(2)
    样式被!important 后修改的方法
    产生BFC环境的几种方式
    当我们访问一个网址后发生了什么?
    Java并发基础--线程通信
    Java 集合学习--ArrayList
    Java并发基础--线程安全
  • 原文地址:https://www.cnblogs.com/qinghe123/p/8080908.html
Copyright © 2011-2022 走看看