2020 python学习第十六天————三层装饰器与迭代器
1.1 三层装饰器
from functools import wraps
def outter2(x):
def outter(func):
@wraps(func)
def wrapper(*args,**kwargs):
res=func(*args,**kwargs)
return res
return wrapper
return outter
2.1 迭代器
迭代是一个重复的过程,每一次重复都是基于上一次的结果而来的
注意:迭代不是单纯的重复
迭代器是一种迭代取值的工具,这种取值方式是通用,不依赖于索引
调用__iter__方法得到的返回值就是对应的迭代器
2.2 可迭代的对象
有__iter__内置方法的对象都是可迭代的对象,str、list、tuple、dict、set、文件对象
ps:可迭代对象.__iter__()返回的是迭代器对象
2.3 迭代器对象
1、有__next__方法
2、有__iter__方法,调用迭代器的__iter__方法得到的就是迭代器自己
ps:迭代器对象之所内置__iter__方法是为了符合for循环第一个工作步骤
2.4 for循环的工作步骤
for循环的工作原理=》迭代器循环
d = {"k1": 111, "k2": 222, "k3": 3333} for k in d: print(k)
1、调用in后的对象的__iter__方法,得到对应的迭代器
2、k=next(迭代器),然后执行一次循环
3、循环往复,直到把迭代器的值取干净了,抛出异常,for循环会自动捕捉异常,结束循环
2.5 总结迭代器
2.5.1 优点
1、不依赖索引,是一种通用的取值方式
2、节省内存
2.5.2 缺点
1、不能取指定位置的值
2、不能预估值的个数,无法统计长度