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()
    

      

  • 相关阅读:
    从1到n中找到任意num个数的和为sum的所有组合
    算法导论5.12
    使用c++技术实现下载网页
    算法导论5.13
    感慨
    算法导论2.37
    [转载]Yahoo!的分布式数据平台PNUTS简介及感悟
    Bigtable 论文笔记
    GFS 论文笔记
    MapReduce论文笔记
  • 原文地址:https://www.cnblogs.com/fengdao/p/6057544.html
Copyright © 2011-2022 走看看