学习笔记_常用内建模块

学习笔记_常用内建模块

学习日期:2016年10月17日
学习课程:常用内建模块 - 廖雪峰的官方网站

  • Python之所以自称“batteries included”(自备全套工具),就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用。

  • 本章介绍了一些常用的内建模块,下面总结一下他们。

datatime

  • datetime是Python处理日期和时间的标准库。

  • datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。

  • 如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。

collections

  • collections是Python内建的一个集合模块,提供了许多有用的集合类。

    • namedtuplenamedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

    • dequedeque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。

    • defaultdict→使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict,除了在Key不存在时返回默认值,defaultdict的其他行为跟dict是完全一样的。

    • OrederedDict→使用dict时,Key是无序的。如果要保持Key的顺序,可以用OrderedDict,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序。

    • Counter→Counter是一个简单的计数器,例如,统计字符出现的个数,Counter实际上也是dict的一个子类。

base64

  • Base64是一种用64个字符来表示任意二进制数据的方法。

  • Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。

struct

  • struct模块是用来来解决bytes(以字节为单位,用带b前缀的单引号或双引号表示)和其他二进制数据类型的转换。

hashlib

  • Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

  • 摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

  • 摘要算法在很多地方都有广泛的应用(储存密码)。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。

itertools

  • Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

  • itertools模块提供的全部是处理迭代功能的函数,它们的返回值不是list,而是Iterator,只有用for循环迭代的时候才真正计算。

    • count()会创建一个无限的迭代器。

    • cycle()会把传入的一个序列无限重复下去。

    • repeat()负责把一个元素无限重复下去,如果提供第二个参数就可以限定重复次数。

    • chain()可以把一组迭代对象串联起来,形成一个更大的迭代器。

    • groupby()把迭代器中相邻的重复元素挑出来放在一起。

XML

  • 在Python中使用SAX解析XML非常简洁,通常我们关心的事件是start_elementend_elementchar_data,准备好这3个函数,然后就可以解析xml了。

  • 解析XML时,注意找出自己感兴趣的节点,响应事件时,把节点数据保存起来。解析完毕后,就可以处理数据。

HTMLParser

  • HTMLParser是用来解析HTML的模块。

  • 利用HTMLParser,可以把网页中的文本、图像等解析出来。

  • 有一个更好用的第三方模块BeautifulSoup是对HTMLParser的人性化封装,可以更简洁的解析XMLHTML

urllib

  • urllib·提供了一系列用于操作URL的功能。

  • urllib提供的功能就是利用程序去执行各种HTTP请求。

  • 如果要模拟浏览器完成特定功能,需要把请求伪装成浏览器。伪装的方法是先监控浏览器发出的请求,再根据浏览器的请求头来伪装,User-Agent头就是用来标识浏览器的。

  • 有一个更好用的第三方模块requests是对urllib的人性化封装,可以更好的操作url

你可能感兴趣的:(python)