day047函数之装饰器(闭包的运用),面向对象之单例模式(设计模式)
本节内容:
1、函数之装饰器
2、面向对象之单例模式
一、函数之装饰器(闭包的运用)
装饰器本质上就是一个python函数,一个闭包函数的运用,
他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。
装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景。
1、装饰器的形成过程
现在有一个需求,要测试一个函数的执行时间,在不改变这个函数的执行情况下:
fe1:简单版的装饰器
简单版的装饰器
fe2:装饰器—-语法糖
装饰器:在不改变原函数的执行(代码机构基础上,给原函数增加一些额外的功能,登录验证,打印日志,测试效率等等.
语法糖,就是python里面封装好的func = timmer(func),你直接调用就行,不用再自己写了
装饰器的语法糖运用
fe3:被装饰函数带参数,这时用无敌传参(*args, **kwargs)
无敌传参解决被装饰函数带参数
fe4: 标准的装饰器, 被装饰的函数带参数,带返回值
标准的装饰器
2、面试题(手写一个装饰器)
3、装饰器的应用: 登录验证.
需求:登陆后可以在各个页面切换
名字
4、带参数的装饰器
带参数的装饰器
5、多个装饰器 装饰一个函数
多个装饰器 装饰一个函数
二、面向对象之单例模式
就是只能实例化一个对象,不管创建多少个对象,都是指向同一个内存地址
例如:多个py文件在引入同一个模块,如果没有设置