派森(Python) | 三器一闭

迭代器

1.什么是迭代器和可迭代对象?

迭代器:在程序中能够进行for循环的,并且用函数iter返回对象的实例和函数next获取可迭代对象的数据。

可迭代对象:能够被for循环的对象就是可迭代对象。

2.可迭代对象的本质和Stopltertion异常的处理

本质:程序开始之后没迭代一次和需要获取其数据,程序会一直向后迭代数据,直到获取到最后一个数据才会停止

Stopltertion异常:每当程序迭代到最后以后数据之后发现没有了数据循环了就停止了,程序自己在内部捕获了这个异常,才会导致程序停止,如果不抛出这个异常,程序就会报错。

3.自定义可迭代对象

只要在元类中定义__iter__方法,那么这个类创建出来的对象一定是可迭代对象。

4.迭代器的注意点

A. 凡是可作用for循环的对象都是lterable类型。
B. 只要作用于next函数的对象都是ltertor类型。
C. 集合数据类型如 list dict str 等是lterable但不是lterator,不过可以通过iter函数获取到一个lterator对象。
D. for循环迭代结束之后不会报Stoplteration异常,因为内部处理过了,但是next迭代完后在执行回报异常。
E. 迭代器一定是可迭代对象,但是不一定是迭代器,列表 元祖 字符串都是可迭代的对象 但是他们不一定是迭代器。


生成器

1.什么是生成器,生成器的特点?

在Python中 ,这种一边循环一边计算的机制,称为生成器,生成器是一种特殊的迭代器。

特点:存储的是生成数据的方式,而不是存储生成的数据,因此节约内存。

2.创建生成器的方法?

A. 把列表推导式的里的[ ] 改为 ( ),这样就形成 一个生成器。
B.在程序中使用yield函数,这样也可以形成生成器。

A图
在这里插入图片描述
B图
在这里插入图片描述
3.yield函数

yield是一个类似return的作用,程序迭代一次遇到yield的时候返回yield旁边的值,如果程序下次迭代的时候再次遇到yield就会执行yield后面的代码。

闭包

1.什么是闭包?

在一个函数里面再嵌套一个函数,并且内部函数使用到了外部函数的变量,内部函数返回的是函数名,这个函数和变量组成的特殊的对象叫做闭包。

2.为什么要有闭包?

函数中定义的变量叫做局部变量,只能在这个函数中使用,为了让更多函数共用数据,在函数外面定义一个全局变量,所有函数都可以使用,但是这个全局变量有一个缺点,这会导致不该用的函数也用。

def func_out(a):
    def func_in(b):
        print('b is %d' % b)
        return a + b
    return func_in

f = func_out(10)
print(f(20))

装饰器

1.什么是装饰器?

在程序中通过 @xxx 对函数进行添加功能的方式 就是装饰器。

2.装饰器的作用?

可以再不修改源函数代码的情况下,对函数添加功能

3.为什么不直接修改原函数?

因为如果直接修改函数会导致其他项目或者功能在调用这个函数的时候多了很多不用的功能,而且编写一段代码有一定的规范"开发封闭"的原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值