继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python 闭包和装饰器的使用

慕运维2858188
关注TA
已关注
手记 123
粉丝 63
获赞 512
函数也是对象

函数本身也是一个对象 , 可以被其它的变量进行引用 , 作为对象返回

图片描述

闭包

在函数里面再定义一个函数, 里面的函数用到外面函数的变量, 这个函数及用到的变量称为闭包

图片描述

里层函数可以轻松访问外层函数的变量

图片描述

当函数重名时

函数本质上也是一个对象,可以被任意指向, 如果有多处指向,后面指向的总是覆盖前面指向的

图片描述

开放封闭原则

开放 : 对外可以扩展开发
封闭: 已实现的代码不修改

装饰器的本质

装饰器实现了开放封闭的代码原则, 原有的代码不发生修改又能增加新的功能 ,从本质上讲是将函数作为对象进行参数传递,并且作为对象进行返回

图片描述

使用语法糖来简化代码

使用@装修函数 的语法装饰函数 , 原函数的代码 和调用不发生变化
图片描述

多次装饰

如下, 第一次装饰时函数并不没有执行,到第二次装饰里将第一次添加的功能添加将执行,所以被装饰函数执行了一次,简化言之:第二次装饰时 inner = func

图片描述

不定参数的装饰器

图片描述

带有返回值的装饰器

图片描述

装饰器带有参数

带有参数的装饰并不会直接传入原有的函数对象,而是返回一个被包裹的装饰器
图片描述

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP