https://www.bilibili.com/video/BV1Gu411Q7JV/
装饰器
decorator不过是一个输入输出和都是函数的函数。实际上输入一定是,输出不一定。理解函数可以作为一个参数传进其他函数,函数可以作为一个返回值。
*args、**kargs,意思是允许不定长的参数。
带参数的装饰器,就是先计算参数的部分,返回的函数再调用另外的函数。??
迭代器和for loop
在进行for in的时候,iterable会现进行iterator的操作,然后取的是这个iterator的值。python官方定义,iterator本身必须是一个iterable。
简单来说:
可以直接作用于for循环的对象统称为可迭代对象,即Iterable;Iterable 只有__iter__ 函数。
可以作用于__next__函数(既然能作用于__next__函数,那么就一定有__iter__函数,否则没有意义)的对象都是Iterator对象。
Iterator类是Iterable的子类,可在doc文档中查找到相关说明。
二者在实现上的区别就超级简单了: iterator有__iter__和__next__方法,而iterable只有__iter__方法。
生成器
生成器是特殊的迭代器。
生成器本质上是一个带yeild的函数,他记住了上一次返回时在函数体中的位置。