Enclosed->Global->Built-in`也就是先在局部作用域內(例如函數內)進行查找,然后在[閉包]1內查找,接下來分別是全局作用域和內置的保留名稱注意:閉包內的變量,不能改變,但是對于列" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python 裝飾器做緩存

系統 1624 0

使用裝python飾器做緩存

裝飾器在之前的文章中有講過,這里主要是說了裝飾器的用法和應該怎么理解。這片文章給出一片補充:主要說在緩存方面的應用。

在此之前呢,需要補充一些知識點:就是 python 查找變量的順序是什么?

            
              答案就是LEGB原則:也就是`Local -> Enclosed -> Global -> Built-in`

            
          

也就是先在局部作用域內(例如函數內)進行查找,然后在[閉包] 1 內查找,接下來分別是全局作用域和內置的保留名稱


注意:閉包內的變量,不能改變,但是對于列表類型或是字典類型的話,可以進行修改內部的值。這也是用裝飾器作為緩存的關鍵地方!

代碼如下:主要是cache函數, 可以運行起來,然后訪問本機8089端口,多次刷新,就會發現變化了!(注意鏈接后面要加參數x=1)
有什么問題可以在評論區討論呦,多多交流!

            
              
                # coding=utf8
              
              
                import
              
               tornado

              
                from
              
               tornado
              
                .
              
              web 
              
                import
              
               RequestHandler

              
                from
              
               tornado
              
                .
              
              ioloop 
              
                import
              
               IOLoop

              
                from
              
               functools 
              
                import
              
               wraps



              
                def
              
              
                cache
              
              
                (
              
              func
              
                )
              
              
                :
              
              
    x 
              
                =
              
              
                [
              
              
                0
              
              
                ]
              
              

    @wraps
              
                (
              
              func
              
                )
              
              
                def
              
              
                wrapper
              
              
                (
              
              
                *
              
              args
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                :
              
              
                # print args, kwargs
              
              
        self 
              
                =
              
               args
              
                [
              
              
                0
              
              
                ]
              
              
                # x.append(args[0])
              
              
        x
              
                [
              
              
                0
              
              
                ]
              
              
                +=
              
              
                int
              
              
                (
              
              self
              
                .
              
              get_argument
              
                (
              
              
                "x"
              
              
                )
              
              
                )
              
              
                print
              
               x
        
              
                return
              
               func
              
                (
              
              
                *
              
              args
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                return
              
               wrapper


              
                class
              
              
                MainHandler
              
              
                (
              
              RequestHandler
              
                )
              
              
                :
              
              

    @cache
    
              
                def
              
              
                get
              
              
                (
              
              self
              
                ,
              
              
                *
              
              args
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                :
              
              
                # print "yes"
              
              
                # print self.get_argument("x")
              
              
        self
              
                .
              
              write
              
                (
              
              
                "yes!"
              
              
                )
              
              
                def
              
              
                post
              
              
                (
              
              self
              
                ,
              
              
                *
              
              args
              
                ,
              
              
                **
              
              kwargs
              
                )
              
              
                :
              
              
        self
              
                .
              
              write
              
                (
              
              
                "hello!"
              
              
                )
              
              
                def
              
              
                make_app
              
              
                (
              
              
                )
              
              
                :
              
              
                return
              
               tornado
              
                .
              
              web
              
                .
              
              Application
              
                (
              
              handlers
              
                =
              
              
                [
              
              
                (
              
              r
              
                "/"
              
              
                ,
              
               MainHandler
              
                )
              
              
                ]
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
    app 
              
                =
              
               make_app
              
                (
              
              
                )
              
              
    app
              
                .
              
              listen
              
                (
              
              
                8089
              
              
                )
              
              
    IOLoop
              
                .
              
              current
              
                (
              
              
                )
              
              
                .
              
              start
              
                (
              
              
                )
              
            
          

  1. 閉包:就是函數內的函數引用內部函數外的變量,這個函數就是個閉包. ??


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青青草原在线视频免费观看 | 一级一级一级一级毛片 | 欧美一区二区三区在线播放 | 色播开心网 | 宣言个人资料 | 欧美日韩精品一区二区三区 | 偷拍在线观看视频在线观看地址 | 成人做爽爽爽爽免费国产软件 | 欧美久久天天综合香蕉伊 | 国产真实乱子伦清晰对白 | 看黄色毛片 | www操操| www午夜| 色综合久久天天综合网 | 草久久免费视频 | av电影直播 | 一本大道香蕉中文日本不卡高清二区 | 亚洲欧美国产日产综合不卡 | 五月激情天 | 午夜性啪啪A片免费播放 | 国产成人高清 | 天天艹夜夜 | 狠狠天天 | www.9cao | 精品国产乱码久久久久久88av | 国产精品va一区二区三区 | 午夜激情视频在线 | 成熟人妻AV无码专区A片 | 欧美精品一区二区三区在线 | 玖玖成人 | 6080yy免费毛片一级新视觉 | 精品久久久久久久久久 | 91大神精品长腿在线观看网站 | 欧美成人午夜剧场 | 国产区免费在线观看 | 九九久久国产精品大片 | 日本激情视频网站w | 91在线观看网站 | 久久精品视频免费 | 午夜精品视频 | 欧美1区|