<1901100042>-<自学训练营学习13群>-<DAY8异常处理>
- 学号:<1901100042>
- 学习内容:<异常处理>
- 学习用时:<3小时>
学习链接:https://docs.python.org/zh-cn/3/tutorial/errors.html 1、错误:语法错误,一般为缺少必要组成部分,如冒号:,格式错误等 2、异常:异常的类型包括ZeroDivisionError,NameError,TypeError等 3、处理异常:try...except 简单理解为try为正常执行的内容,except为预计的发生错误的内容,如果正常运行,except不执行,如果发生错误/异常,立即中断try中执行的内容,开始执行except中的内容。
try...except...else
在上文的基础上加了else,作用和在try子句中添加代码一样,但比直接在try子句中添加代码好的地方在于它避免了意外捕获由try... except语句保护的代码未引发的异常。
总结:何为处理异常,就是在代码中考虑到异常的可能存在,并采用except对齐进行处理,如打印指定内容等。
欠缺知识点:异常参数 补异常参数:即为在异常名称后面指定一个变量,这个变量和一个异常实例绑定。
4、抛出异常:raise 允许程序员强制发生指定的异常。raise 唯一的参数就是要抛出的异常。这个参数必须是一个异常实例或是一个异常类(问:可否是异常变量?)
5、自定义异常:创建新的类来命名异常
6、定义清除操作try... finally finally 子句总会在离开try语句前被执行,无论是否发生异常。
7、预定义的清理操作
<收获总结> 今天整体内容比较简单,但实用性很强,首先,通过day8的学习,加强了对报错的认知。结合以前代码运行过程中遇到的报错信息,对代码运行中的错误有了很深的了解。其次,了解了异常抛出的机制已经常见的异常库。 <遇到的难点与问题(是否解决)> 暂无
学号:<1901100042> 学习内容:<标准库> 学习用时:<8小时>
学习记录
一、标准库简介 1、格式化输出 reprlib模块:提供了一个定制化版本的repr()函数,用户略缩显示大型或深层嵌套的容器对象; pprint模块:提供了更加复杂的打印控制,其输出的内置对象和用户自定义对象能够被解释器直接读取。当输出结果过长而需要折行时,“美化输出机制”会添加换行符和缩进,以更清楚地展示数据结构; textwrap模块:能够格式化文本段落,以适应给定的屏幕宽度; locale模块:处理与特定地域文化相关的数据格式。
2、模板 string模块包含一个通用的Template类,具有适用于最终用户的简化语法。他允许用户在不更改应用逻辑的情况下定制自己的应用。 这种格式化通过占位符实现。占位符由$加上合法的Python标识符(只能包含字母、数字和下划线)构成。最终通过substance()方法输出对应的结果。注意substance()方法对应的参数必须包括所有占位符的值,否则将抛出KeyError。另外,一旦使用花括号将占位符括起来,其后面将直接跟后续内容,而中间没有空格连接。 Template的子类可以自定义定界符。 3、使用二进制数据记录格式 struct模块提供了pack()和unpack()函数,用于处理不定长度的二进制记录格式。 4、多线程 线程是一种对于非顺序依赖的多个任务进行解耦的技术。多线程可以提高应用的响应效率,当接收用户输入的同时,保持其他任务在后台运行。一个有关的应用场景是,将I/O和计算运行在两个并行的线程中。 5、日志 logging模块是提供功能齐全且灵活的日志记录系统。在最简单的情况下,日志消息被发送到文件或sys.stderr。 日志系统可以直接从Python配置,也可以从用户配置文件加载,以便自定义日志记录而无需更改应用程序。 6、弱应用 weakref模块提供的工具可以不必创建引用就能跟踪对象。当对象不再需要时,它将自动从一个弱引用表中被移除,并为弱引用对象触发一个回调。 7、用于操作列表的工具 许多对于数据结构的需求可以通过内置列表类型来满足。但是,有时也需要具有不同效费比的替代实现。 array模块提供了一种array()对象,它类似于列表,但只能存储一致的数据且存储密集更高。 collections模块提供了一种deque()对象,它类似于列表,但从左端添加和弹出的速度较快,而在中鉴查找的速度较慢。此种对象适用于实现队列和广度优先树搜索。
二、Counter对象 计数器的典型应用:
Tally occurrences of words in a list
cnt = Counter() for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: cnt[word] += 1 cnt
Find the ten most common words in Hamlet
import re words = re.findall(r'\w+', open('hamlet.txt').read().lower()) Counter(words).most_common(10)
1、class collection.Counter([inerable-or-mapping]) 一个Counter是一个dict的之类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一样存储,它们的计数存储为值。计数可以是任何整数值,包括0和负数。 Counter对象有一个字典接口,如果引用的键没有任何记录,就返回一个0,而不是弹出一个KeyError。 elements():返回一个迭代器,每个元素重复计数的个数。元素的顺序是任意的,如果一个元素的计数小于1,element()就会忽略它。 most_commom([n])返回一个列表,提供n个频率最高的元素和计数。如果没有提供n,或者是None,most_common()返回计数器中的所有元素,相等个数的元素顺序随机。
三、读写文件 1、open的用法,推荐使用 with open()
<收获总结> Day9遇到的问题:1、Counter使用不熟练,无法实现计数的需求,后经跟着程序一步步走,借鉴其他同学的经验,成功的完成了代码主体部分,并且函数增加了一个int类型变量count,用来限制输出元素的个数; 2、在使用open()命令时,由于缺少encoding= ’utf-8’,导致一直出现UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 180: illegal multibyte sequence这种报错,在StackOverflow上成功解决了这个问题; 3、综合比较d09和d07,同样是实现计数的需求,Counter函数更加简单、方便。
<遇到的难点与问题(是否解决)> 问题如上,已解决。
DAY10 学号:<1901100042> 学习内容:<第三方库> 学习用时:<4小时>
学习内容:第三方库 1、 第三方库安装 采用全自动安装,pip install jieba,然后通过import引用 2、 jieba的主要功能和使用方法 a、 jieba.cut方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式,HMM参数用来控制是否使用HMM模型; b、 jieba.cut_for_search方法接受两个参数:需要分词的字符串;是否使用HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 c、 待分词的字符串可以是unicode或utf-8字符串、GBK字符串。注意:不建议输入GBK字符串,可能无法预料地错误解码成UTF-8 d、 jieba.cut以及jieba.cut_for_research返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut以及jieba.lcut_for_research直接返回list e、 jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同的词典。jieba.dt是默认的分词器,所有全局分词相关函数都是该分词器的映射。
学习总结:day10第三方库,主要学习了安装第三方库jieba以及jieba的使用,但对于其机理部分暂未涉及。由于jieba库设计的比较好,使用起来十分方便,暂未遇到困难。
DAY11、DAY12均为实战项目,参照视频学习,成就感满满。