python学习日志10
2018-02-04 00:00
183 查看
摘要: 迭代器和生成器、异常
迭代器
可以被next()函数调用并不断返回下一个值(直到没有数据是抛出StopIteration)的对象
迭代器内部持有一个状态,该状态用于记录当前迭代所在的位置,
以方便下次迭代的时候获取正确的元素
斐波那契数列演示迭代器、生成器
可迭代类
yield生成器
异常
多路捕获错误信息:子类错误在前,父类错误在后
finally:最终要执行的内容写在finally中
作用:释放资源
迭代器
可以被next()函数调用并不断返回下一个值(直到没有数据是抛出StopIteration)的对象
l=[1,2,3]; print(type(l)) l=iter(l); print(type(l)) for i in l: print(i); print(next(l)); print(next(l)); print(next(l));
迭代器内部持有一个状态,该状态用于记录当前迭代所在的位置,
以方便下次迭代的时候获取正确的元素
斐波那契数列演示迭代器、生成器
def fab(max): n,a,b=0,0,1 L=[]; while n<max: #print(b); L.append(b); a,b=b,a+b; n=n+1; return L; l=fab(10) for i in l: print(i);
可迭代类
class Fab(object): def __init__(self,max): self.max=max; self.n,self.a,self.b=0,0,1; def __iter__(self): return self; def __next__(self): if self.n<self.max: r=self.b; self.a,self.b=self.b,self.a+self.b; self.n+=1; return r; raise StopIteration(); f=Fab(10); print(next(f)); print(next(f)); print(next(f)); print(next(f)); print(next(f));
yield生成器
def fab(max): n,a,b=0,0,1 while n<max: # print(b); yield b; a,b=b,a+b; n=n+1; l=fab(10); print(next(l)); print(next(l)); print(next(l)); print(next(l));
异常
a=10; b=input('请输入被除数:') try:#可能产生异常的语句 b = int(b); c = a / b; print(c) except Exception:#捕获异常并处理 print('发生错误!') print("程序正常结束..");
多路捕获错误信息:子类错误在前,父类错误在后
a=10; b=input('请输入被除数:') try: b = int(b); c = a / b; print(c) except ZeroDivisionError as zero:#子类错误 print('被除数不能为0..异常信息:',zero) except ValueError as v:#子类错误 print('转换数字 出错 请输入数字.异常信息:',v) except Exception:#父类错误 print('发生错误!') else:#没有异常才会执行的代码 print("程序正常结束..")
finally:最终要执行的内容写在finally中
作用:释放资源
a=10; b=input('请输入被除数:') try: b = int(b); c = a / b; print(c) except ZeroDivisionError as zero:#子类错误 print('被除数不能为0..异常信息:',zero) except ValueError as v:#子类错误 print('转换数字 出错 请输入数字.异常信息:',v) except Exception:#父类错误 print('发生错误!') else:#没有异常才会执行的代码 print("程序正常结束..");
finally:
try:
del a,b,c
except Exception as e:
print(e)
print("finally:快儿 释放资源");
print('程序其他代码');
相关文章推荐
- python学习日志10
- python学习日志3
- python日志logging模块学习
- 小Y的Python学习日志--流程控制(逻辑符)
- python_日志模块学习记录
- Cocos2d-x 3.1.1 学习日志10--一进来你就知道了Box2D了
- python学习日志--注释
- AJAX ControlToolkit学习日志-DropShadowExtender(10)
- 笨方法学习Python(1-10)
- 学习日志---python(列表解析、生成器、字典和集合)
- cocos2d-x学习日志(10) --射击游戏(喵星战争)
- Python模块学习之logging日志封装
- Python学习日志
- 零基础入门学习Python(10)--列表:一个打了激素的数组
- 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
- python学习——练习题(10)
- Python模块学习之logging日志封装
- Python学习_10__python2到python3
- Python Cookbook学习记录 ch1_10_2013/10/23
- python 的日志logging模块学习