昨日内容回顾
-
重要内置函数
map()映射 zip()拉链 filter()过滤 sorted()排序
-
常见内置函数
abs() round() bytes() int() bin() oct() hex() chr() ord() eval() exec()等等
-
迭代器对象
内置方法中含有双下iter方法的数据。包括字符串、列表、字典、元组、集合。
-
可迭代对象
对可迭代对象使用双下iter方法得到的结果为可迭代对象,可迭代对象可调用双下next方法。
-
for循环本质
for循环本质是对可迭代对象调用双下iter及双下next方法,取值完成后捕获错误并处理。
-
异常捕获基础
异常分为语法错误及逻辑错误。
报错的基本句型:异常位置、异常类型、相关提示。
今日内容概要
- 异常类型
- 异常处理基本结构
- 异常处理其他关键字
- 异常处理补充
- 生成器相关
今日内容详细
异常类型
语法错误 SyntaxError
名称错误 NameError
索引错误 IndexError
键错误 KeyError
缩进错误 IndentationError
……
异常处理基本结构
使用try及except关键字,try调用内存监测下方子代码,except根据错误类型做相关操作。
try:
"""code to be executed"""
except """Error type""" as e:
"""resolution to the error"""
异常处理其他关键字
通用错误类型关键字 Exception/BaseException
使用上述两个关键字可以对所有错误类型做统一操作。
正常运行对应处理关键字 else
若try下方子代码未出现错误,则运行else对应子代码。
最终处理关键字 finally
无论try监测的子代码是否报错,均会运行finally下方子代码。
异常处理补充
断言 assert
assert后跟预测的结果,若预测正确,则代码继续向下运行,若预测错误,则报错断言错误。
主动报错 raise
raise后跟错误类型及错误提示,可在满足条件时主动报错。
生成器相关
生成器本质是迭代器对象,与一般迭代器的对象的区别是,生成器是程序员自己定义的。
含有yield关键字的函数运行后函数转换为生成器。
生成器调用双下next方法后,函数停止在yield关键字处,再次调用从yield处继续向下运行。
yield关键字类似与return,后方可跟返回值。
yield冷门用法:在定义生成器时,使用yield赋值给形参,调用时配合迭代器对象的send方法将数据传给需要赋值的形参。
利用生成器知识模拟range方法
def my_range(start_num=0, end_num=None, step_num=1):
if end_num:
if start_num < end_num:
while start_num < end_num:
yield start_num
start_num += step_num
elif start_num == end_num or step_num == 0:
yield start_num
elif start_num > end_num and step_num > 0:
yield quit()
else:
while start_num > end_num:
yield start_num
start_num += step_num
else:
end_num = start_num
start_num = 0
while start_num < end_num:
yield start_num
start_num += step_num
原文地址:http://www.cnblogs.com/akazukis/p/16800435.html