Python之路-装饰器

一.装饰器前置知识要点

      1.名称空间

         存放名字与变量绑定关系的地方

         名称空间的分类:

          内置名称空间:Python解释器启动时,存放自带的名字的地方。(比如内置函数)

          全局名称空间:在执行文件时,文件级别名字存放的地方

           局部名称空间:在执行文件过程中,如果调用函数,用来存放函数内定名称的地方,调用时生效,调用结束后失效

           加载顺序:内置--------》全局----------》局部

           查找顺序:局部--------》全局----------》内置

       2.作用域

          作用域:作用的范围

           (1).全局作用域(globals())

                  全局存活,全局有效

            (2).局部作用域(locals())

                   临时存活,局部有效

            注意点:1.作用域关系,函数定义时已经确定,与函数调用位置无关,在调用函数是回到原来定义函数

                              的位置去找作用域关系。

       3.闭包函数

          定义:定义在内部的函数,包含对外部作用域的引用,而不是对全局作用域的引用,该函数就是闭包函数

          

二.装饰器  

     装饰器目的:遵循原则的前提下,为其他函数添加新功能

     装饰器遵循的原则:1.不修改被装饰对象的源代码 2.不修改被调用对象的调用方式

     无参装饰器例:

     

       有参函数例:

       

 

        

                    

posted @ 2017-07-28 23:24  wchunc  阅读(148)  评论(0编辑  收藏  举报