博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 教程阅读笔记(十):标准库一瞥(续)
阅读量:4598 次
发布时间:2019-06-09

本文共 1619 字,大约阅读时间需要 5 分钟。

这篇主要涉及一些更高级的模块,这些模块支持那些专业的编程需求,因此在小脚本中是很少出现。

reprlib模块提供了针对大型或深度内嵌容器的缩略显示的repr()版本(不过说实话,我倒是没看懂给的例子)

 

pprint模块提供了对内置及自定义对象以一种可被解释器理解的方式进行打印的更复杂控制的能力。当结果长于一行时,这种“更漂亮的打印”会增加换行和缩进来更好的适配数据结构

 

textwrap模块格式化文本段落以适配屏幕宽度

 

locale模块可以访问与文化相关数据格式的数据库。locale的分组属性提供了一种直接的方式以一组分割符来格式化数值

 

string模块有个Template类可以简化用户的编辑。看看例子就明了了,对与$的转义需使用$$

>>> from string import Template

>>> t = Template('${village}folk send $$10 to $cause.')

>>> t.substitute(village='Nottingham', cause='the ditch fund')

'Nottinghamfolk send $10 to the ditch fund.'

 

当使用substitute()方法时,当占位符未提供时将会抛出KeyError异常。可以使用safe_substitute()方法来部分输出可替换项,对于未提供的占位符保持不变直接输出

 

模板子类可指定分隔符。

 

struct模块提供了pack()和unpack()函数来处理变长二进制记录格式,这里举的例子很有意思,是用unpack来解析zip文件,这样可想而知zipfile也许就是按照所有既定规则使用unpack来恢复数据的。

 

threading是用来对那些没有顺序依赖的任务进行解耦的技术。多线程应用的主要挑战是需要协调线程共享数据和其他资源。线程模块提供了大量的同步原语,如锁,事件,条件变量和信号量。使用队列对象来进行线程间通信的程序是易设计,可读性和可靠性也会较好。

 

logging模块提供了完整和灵活的日志系统。最简单的形式是,日志信息会被送到一个文件或sys.stderr

默认情况下,info()和debug()的信息是不会显示的,但是新的规则可以定义来选择消息优先级是否显示:DEBUG,INFO,WARNING,ERROR,CRITICAL

日志系统可以直接从python上进行配置,也可以用用户可编辑的配置文件进行配置。

 

weakref模块提供了不创建引用就可以跟踪对象的工具。当对象不再需要时,将自动从weakref表中删除,回调函数将被触发。

 

array模块提供array()对象,和列表类似,用来存储同质的数据,并更紧凑的存储。

>>> from array import array   

>>> a = array('H', [4000, 10, 700, 22222])   每个元素只用2Byte,而不是list中的16字节

 

collections模块提供了deque()对象,来更快的追加和从左边弹出元素,但是如果从中间查找会更慢

bisect模块提供了函数操作排序列表

heapq模块提供了函数来实现基于普通列表的堆。最低值通常保存在位置0,这对那些频繁取用最小元素而不需要进行完整的列表排序的应用是很有用的。

 

decimal模块提供了Decimal数据类型来进行浮点运算。与内置的二进制浮点实现。有以下好处:

1.金融应用和其它需要精确十进制表达的场合

2.控制精度

3.控制舍入以适应法律或者规定的要求

4.跟踪精度位置

5.那些用户希望结果和计算的匹配可以手动调整的场合

 

Decimal类能够进行精确的模运算,而二进制浮点运算不行

转载于:https://www.cnblogs.com/westwind/archive/2012/05/22/2514015.html

你可能感兴趣的文章
PAT A1009 Product of Polynomials (25 分)——浮点,结构体数组
查看>>
Xen虚拟机克隆实战
查看>>
js文件三斜杠注释///reference path用途
查看>>
Ruby(或cmd中)输入命令行编译sass
查看>>
ThreadPoolExecutor线程池
查看>>
开源许可证的选择
查看>>
ZJOI2019二试游记
查看>>
一致性hash
查看>>
Oracle创建用户、角色、授权、建表
查看>>
umdh windbg分析内存泄露
查看>>
LCA【模板】
查看>>
T1230 元素查找 codevs
查看>>
TypeScript `unknown` 类型
查看>>
谈Javascript的数组操作方法(concat(),slice(),splice())
查看>>
BZOJ 4034 树上操作(树的欧拉序列+线段树)
查看>>
通过Ajax方式上传文件,使用FormData进行Ajax请求
查看>>
PHP内置函数生成随机数的方法汇总
查看>>
JavaScript的变量及函数声明提升及预解析
查看>>
jQrid常用操作(转帖)
查看>>
【原创】我经常用到的软件及工具
查看>>