目录
迭代器
迭代器分为迭代器对象和可迭代对象,迭代就是每一次的结果都必须依赖于上一次的结果,能够通过for循环进行迭代操作,也能够通过__next__方法进行迭代操作
可迭代对象
内置有__iter__方法的对象都是可迭代对象(内置的意思是python自带的,解释器中已经存在的,外面可以直接使用的
可迭代对象有哪些:
1.所有序列类型:如list,str和tuple
2.非序列类型:dict,set,文件对象
3.实现__iter__()方法的任意对象
迭代器
迭代器对象:
1.实现了迭代器协议的对象,就是一个迭代器(就是一个对象需要提供next方法,该方法要么返回迭代对象中的下一项,要么就抛出Stoplteration异常,迭代终止)
2. 所有的可迭代对象,都可以通过内置函数iter()转换为迭代器
3.迭代器对象能够通过内置函数next进行迭代操作
注意:
迭代给我们提供了一种不依赖索引取值的方法
生成器
什么是生成器,就是在定义函数的时候,函数内部有yield关键字就是生成器,但是在没调用之前它就是一个普通的函数,调用后才变成生成器
yield传值
yield和return的对比
yield:
1.可以有返回值
2.函数遇到yield不会结束,只会暂停,等待下一次运行时从暂停处继续往下执行
3.yield关键字会把函数变成生成器,支持迭代取值
return:
1.可以有返回值
2.遇到return关键字直接结束函数运行
for循环内部原理
for循环内部就是由__iter__和__next__组成,只是pycharm软件帮我们处理了
在一些不能或不方便使用for循环的情况下,就可以用__iter__和__next__来取值,不过要自己做好异常处理措施,异常处理措施和怎么如何扑捉异常如下
扑捉异常
什么是异常
就是错误发生时发出的信号,如果信号不处理,后续的代码就不能正常执行
异常的种类
1,语法错误:这是不被允许的,如果出现要立即改正,不然代码不能正常运行
2,逻辑错误:是可以允许的,但是我们写逻辑的时候一定要尽量避免逻辑错误
如何扑捉异常
可以把书写的代码监测起来;但是,监测的代码越少越好
万能异常
如果不用万能异常,此段代码就会因为迭代原因报错,影响后续的代码的运行,使用万能异常后,不会报错,代码正常运行