12python语言三大神器
01迭代器
1.1 什么是迭代器(iter)
迭代器是容器:程序中无法直接创建一个迭代器,只能将别的序列转换成迭代器
特点:打印迭代器无法查看所有的元素,也无法获取元素的个数,获取元素的时候,每次只能获取最前面的那个元素,元素取一个少一个
1.2 查- 获取元素
迭代器不管以什么方式获取到了某个元素,那么这个元素一定会从迭代器中消失
1)查单个: next(迭代器) - 获取迭代器中最前面的那个元素
2)遍历
02生成器
2.1 什么是生成器
生成器也是容器,其它容器是直接保存多个数据,生成器保存的是产生多个数据的算法
生成器获取数的方式和特点和迭代器一样。
2.2 创建生成器
调用一个带有yield关键字的函数就可以得到一个生成器的对象
2.3 控制生成器产生数据的个数和值
一个生成器能产生的数据的个数和值由创建生成器调用的那个函数的函数体在执行时会遇到几次yield以及每次yield后面的值来决定个数。由yield后面的数据决定值
2.4 创建数据的原理
每次获取生成器的数据的时候,就会去执行创建这个生成器的函数体,但是每次执行到yield就会停下来
3 装饰器
3.1什么是装饰器 - - 给已经定义好的函数添加功能的工具
装饰器就是一个函数,这个函数即是实参高阶函数,又是返回值高阶函数
4无参数装饰器
1.无参装饰器语法
语法:
del 装饰器名(参数1):
def 添加完功能的新函数(*args,**kwargs):
调用原函数
添加新功能
return 添加完功能的新函数
语法细化:
def 装饰器名(f)
def new_f(*args,**kwargs)
result = f(*args,**kwargs)
添加新功能
return result
return new_f
5有参装饰器
有参装饰器语法细化:
def 装饰器名称(参数列表):
def 无参装饰器(f):
def new_f(*arg, **kwargs):
result = f(*arg, **kwargs)
新增功能
return result
return new_f
return 无参装饰器
参数列表 - 看实现装饰器新增功能需不需要额外的数据需要几个