您的位置:首页 > 编程语言 > Python开发

python学习日志10

2018-02-04 00:00 183 查看
摘要: 迭代器和生成器、异常

迭代器

可以被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('程序其他代码');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: