叠加装饰器 迭代器

叠加装饰器:

​ 在同一个被装饰对象中,添加多个装饰器,并执行

@装饰1

@装饰2

@装饰3

def 被装饰对象():

​ pass

注意:装饰器在调用被装饰对象是才会添加的功能

叠加装饰器:

​ -- 装饰器的顺序:由下到上

​ --执行的顺序:由下到上

注意:无论inner中出现任何判断,最后都要返回“调用后的被装饰对象” func(*args, **kwargs)

有参装饰器:

​ 本质上是在无参装饰器上套了一个外层函数

​ 无参装饰器可以引用外层函数的名字

应用:

    用户权限的认证

迭代器

迭代器:

​ 迭代取值的工具

迭代:

​ 迭代指的是重复迭代,每一次迭代都是基于上一次的结果而产生

迭代器:

​ 迭代器指的是迭代取值的工具,它可以迭代取值

  • 如果想要知道python中迭代器是什么,首先需要先知道什么是可迭代对象?

可迭代对象:

​ 所有的序列类型:str(字符串)、list(列表)、tuple(元祖)、dict(字典)、set(集合)、f(文件)

​ 凡是内部有 __ iter__ () 方法的都是可迭代对象

可迭代对象:

通过可迭代对象 __ iter __ (),得到的返回值就是“迭代器对象”

迭代器是迭代取值的工具,作用是迭代取值

获取迭代器:

list1 = [1,2,3]

#调用__iter _ ()会得到一个返回值,该返回值就是一个迭代器对象

​ iter_list = list1._iter ()

---如何迭代取值:

迭代器对象 __ next__ () 每执行一次,都会从迭代器对象中取出一个值

注意:取到最后一个值后,若值没有,则会报错

while True
    try:
        print(iter_list._next_())
    except StopIteration:
        break

for 循环的原理:

in : 会将可迭代对象自动调用_ iter _ ()变成迭代器对象

for i in 可迭代对象:

​ #会自动帮你调用_ next_

print(i) : for循环内部会有一个捕获异常机制,一旦遇到异常就会停止取值

迭代器的优缺点:

​ 优点:提供一种不依赖索引取值的方式

​ 节省内存空间

​ 缺点:指定取值麻烦,每次取值都要从第一个开始查找

​ 不能通过len计算长度

猜你喜欢

转载自www.cnblogs.com/127-2933/p/11867940.html