美文网首页
Python 闭包与装饰器图解

Python 闭包与装饰器图解

作者: 风舞柏杨 | 来源:发表于2018-05-11 21:36 被阅读0次

    python万物皆对象!

    闭包

    闭包:两个函数的嵌套,外部函数返回内部函数的引用,外部函数一定有参数

    def 外部函数(参数):

        def 内部函数():

            pass

        return 内部函数

    他跟函数之间的区别:

            1.格式两个函数嵌套

            2.闭包外部函数的参数可以在内存中保持

    装饰器

    装饰器是什么:闭包加@xxx

    装饰器的作用:在不改变原先的函数值跟调用的方式,添加额外的功能

    装饰器的代码:

        def set_fun(func):

            def call_fun(*args,**kwargs):

                return func(*args,**kwargs)

            return call_fun

        @set_fun   

        def test():

            pass

    装饰器结论:

    1.装饰前的函数test,是由func指向的

    2.装饰后的函数test,实际是call_fun

    3.装饰前的test,call_fun,func三者参数一致

    4.装饰器不能去改变函数的调用方式跟返回值(道德)

    一个装饰器一个函数了解

    二个装饰器装饰一个函数图解大法

    二个装饰器装饰器一个函数内存图了解

    装饰器传参

    在闭包外层再套一层,返回闭包的引用

    def set_args(args):

        def set_fun(func):

            def call_fun(*args,**kwargs):

                return func(*args,**kwargs)

            return call_fun

        return set_fun

    @set_args("xx")  #这个要分两步执行,第一步执行set_args("xx")函数得到一个闭包的最外层的引用,第二步去@闭包的最外层引用去执行原先的装饰器过程

    def test():

        print("test") 

    相关文章

      网友评论

          本文标题:Python 闭包与装饰器图解

          本文链接:https://www.haomeiwen.com/subject/ufpqdftx.html