阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
文章目录
一、decorator?
1、本质:
返回函数的高阶函数
2、目的:
执行期间动态增加一些功能
3、不含参、含参的定义
二、generator
《参考文1:廖老师》
《参考文2:连Python产生器(Generator)的原理都解释不了,还敢说Python用了5年?》
1.本质
是一个迭代器,不过是动态产生待迭代的值
2、目的
边循环边计算,不必一开始就创造完整的list,从而节省大量空间。即让需要迭代的值不必常驻内存。
3、初始化方式
两种要掌握:
第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。
定义generator的第二种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator函数,调用一个generator函数将返回一个generator。
4、执行过程
yield返回一个generator,输出值仍然是yield后面表达式的值,暂停,直至下一次执行。
其实yield语句就像print,只不过yield除了实现print以外,还能实现中断。
5、区分generator 和 generator函数
generator函数 != generator
generator函数是得到generator的一种方式,只要函数中含有yield,此函数就是generator函数,它会返回一个generator。故generator函数是generator两种初始化方式中的一种。
6、要理解for循环
for循环里会自动调用next()函数
7、如何调用generator
不用next()挨个调用
在for循环里用即可。
三、上下文管理器?
装饰器 + 生成器 = 上下文管理器
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!