一、知识回顾:
上一节,我们讲了生成器,我们先来回顾一下生成器的使用。
生成器:yield使得函数冻结且提交一个值。
每次使用生成器,我们以前都使用了for循环,实际上使用的是next函数来进行下一次迭代。
总结得出,我们使用的生成器依赖于一个函数。
所谓递归生成器,实则是在生成器中,再次调用生成器。
上一次我们没有实测next函数调用的问题,以下进行补充。
补充next函数:
作用:主要是用来返回下一次迭代器的返回值。
使用方法:next(迭代器,[默认值])
如果直接使用两次调用自定义迭代器函数的方式,将返回的是每一次迭代器的初始位置的值,也就是说,指针总是指向的是初始的位置。
我们应该把自定义的迭代器赋值给一个变量,然后再使用next函数对这个变量进行下一次迭代。
举例:
#使用变量来表示一个实际的生成器对象
scq=shengChengqi()
print(next(scq))
print(next(scq))
本节知识视频教程
二、异常概述
提问:什么是异常?
不是普通的正常的代码执行情况。实际上是属于系统内代码有问题导致的报错。异常,我们往往使用Exception来表示。
三、异常的分类
我们这里讨论的异常主要分为两大类。
一类是自动自动抛出的异常,系统编译器自动判断来抛出异常。
举例:
laoliuAge=31/0
抛出异常ZeroDivisionError: division by zero
一类是人工手动抛出的异常,使用raise来手动抛出。
手动抛出异常使用:raise Exception,这里的Exception是一个异常类,类的话我就可以使用构造方法进行初始值的传入。也就是说传入的是异常的描述。我们可以使用raise Exception(“这里是我们的自定义异常”)
提问:实际中我们如何使用手动来抛出异常?
我们往往需要结合一些条件判断来手工抛出异常。
举例如下:
a=1
if a==1:
raise Exception("这里是老刘抛出的异常")
else:
print("沒有異常")
三、异常的利用
举例:
1.判断是否是int类型的数据
2.判断是否是string类型的数据
归纳一下:
1.我们可以利用异常来做一些数据类型的转换。
2.我们可以利用异常来进行数据类型的判断。
四、重要的内建类异常
五、总结强调
1.理解什么是异常?
2.理解异常的分类
3.掌握手动抛出异常的方法
4.学会利用异常,把异常的抛出为己所用
本节源代码:
# def shengChengqi():
# list1=[3,5,2]
# for i in list1:
# yield i
#
# #使用变量来表示一个实际的生成器对象
# scq=shengChengqi()
# print(next(scq))
# print(next(scq))
# print(next(scq))
# print(next(scq))
# laoliuAge=31/0
# a=1
# if a==1:
# raise Exception("这里是老刘抛出的异常")
# else:
# print("沒有異常")
b="2"
c=int(b)+2
# try:
# c=b+2
# print(c)
# except:
# print("程序有點小问题,请联系管理员")