Python-闭包函数如何实现装饰器
1、(详细的闭包函数看下面的链接。)关键知识:1)了解函数的作用域;2)函数名是内存的地址,加了圆括()才算是调用。3)闭包函数的过程:a.函数嵌套;b.内函数使用外函数嵌套域的变量;c.外函数返回内函数的函数名;d.在全局域引用外部函数(即得到内部函数的函数名)并加圆括号。def outFun(): a='嵌套域a' def inFun(): b='本地域引用:'+a return b return inFuninFun=outFun()print(inFun())注意:在调用outFun()函数时,赋值的名字是自由的,可以是a=outFun(),也可是outFun=outFun()。但加了括号后的结果都是一样的。
2、传参数:def outFun(a): def inFun(b): b=b+a return b return inFuninFun=outFun('嵌套域a')print(inFun('本地域引用:'))同样是内部函数引用了外部函数的变量a。可以用函数的特殊属性inFun.__closure__来验证是否引用了嵌套域的变量。用inFun.__closure__[0].cell_contents查值。(上面的验证方法不用做多的解读,了解即可)既然传参是可行的,那么可做的文章就大了,装饰器就是使用闭包函数,使得代码在复用上更上一层楼。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:83
阅读量:54
阅读量:50
阅读量:77
阅读量:21