zoukankan      html  css  js  c++  java
  • 装饰器

    一句话说清

    不改变原有功能代码,不改变原有调用方式,实现调用

    第二句话——符合 开放-封闭原则

    例子

    user_status = False
    
    def login(func):        #定义,并不执行
        def inner(*args,**kwargs):      #用于传递 func参数
            _username = "alex"
            _password = "abc123"
            global user_status
    
            if user_status == False:
                username = input("user:")
                password = input("password:")
                if username == _username and password == _password:
                    password("welcome login...")
                    user_status = True
                else:
                    print("wrong username or password")
    
            if user_status == True:
                func(*args,**kwargs)        #将参数传递给func
        return inner        #返回inner内存地址,里面包括了func的执行结果和inner的执行结果
    
    def home():
        print("--------首页-------")
    @login          #相当于定义America=login(America),装饰器是把原来的函数的内存地址,当成参数传进去,返回的新内存地址,再赋值给原来函数的变量名
    def America():
        print("--------欧美专区-------")
    @login
    def japan():
        print("--------日韩专区-------")
    @login
    def henan():
        print("--------河南专区-------")
    
    home()
    America()
    

      

  • 相关阅读:
    element input number e
    地图 scatter 自定义图片
    地图某一个区域设置高亮
    echarts 获取县级json
    echarts map 阴影(重叠)
    echarts 渐变色
    echarts tooltip 超出处理
    npm 下载 zip
    axios post 下载文件
    书签 css
  • 原文地址:https://www.cnblogs.com/fengdao/p/6057544.html
Copyright © 2011-2022 走看看