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")
  • 相关阅读:
    归并排序
    [转]html5 Canvas画图教程(1)—画图的基本常识
    [转]浏览器工作原理
    [转]Web开发者和设计师必须要知道的 iOS 8 十个变化
    mobile web开发(1) html页面头部基本设置
    差点难产的HTML5
    感觉离开了好久
    Java----区别
    MySQL---sql语句优化
    MySQL---数据库优化
  • 原文地址:https://www.cnblogs.com/qinghe123/p/8080908.html
Copyright © 2011-2022 走看看