作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

Python有一套很有用的标准库(standard library)。标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。

我将根据我个人的使用经验中,挑选出标准库三个方面的包(package)介绍:

  • Python增强
  • 系统互动
  • 网络

第一类:Python增强

Python自身的已有的一些功能可以随着标准库的使用而得到增强。

1) 文字处理

Python的string类提供了对字符串进行处理的方法。更进一步,通过标准库中的re包,Python可以用正则表达式(regular expression)来处理字符串。

正则表达式是一个字符串模板。Python可以从字符中搜查符合该模板的部分,或者对这一部分替换成其它内容。比如你可以搜索一个文本中所有的数字。正则表达式的关键在于根据自己的需要构成模板。

此外,Python标准库还为字符串的输出提供更加丰富的格式, 比如: string包,textwrap包。

2) 数据对象

不同的数据对象,适用于不同场合的对数据的组织和管理。Python的标准库定义了表和词典之外的数据对象,比如说数组(array),队列(Queue)。一个熟悉数据结构(data structure)的Python用户可以在这些包中找到自己需要的数据结构。

此外,我们也会经常使用copy包,以复制对象。

3) 日期和时间

日期和时间的管理并不复杂,但容易犯错。Python的标准库中对日期和时间的管理颇为完善(利用time包管理时间,利用datetime包管理日期和时间),你不仅可以进行日期时间的查询和变换(比如:2012年7月18日对应的是星期几),还可以对日期时间进行运算(比如2000.1.1 13:00的378小时之后是什么日期,什么时间)。通过这些标准库,还可以根据需要控制日期时间输出的文本格式(比如:输出’2012-7-18‘还是'18 Jul 2012')

4) 数学运算

标准库中,Python定义了一些新的数字类型(decimal包, fractions包), 以弥补之前的数字类型(integer, float)可能的不足。标准库还包含了random包,用于处理随机数相关的功能(产生随机数,随机取样等)。math包补充了一些重要的数学常数和数学函数,比如pi,三角函数等等。

(尽管numpy并不是标准库中的包,但它的数组运算的良好支持,让它在基于Python的科研和计算方面得到相当广泛的应用,可以适当关注。)

5) 存储

之前我们的快速教程中,只提及了文本的输入和输出。实际上,Python可以输入或输出任意的对象。这些对象可以通过标准库中的pickle包转换成为二进制格式(binary),然后存储于文件之中,也可以反向从二进制文件中读取对象。

此外,标准库中还支持基本的数据库功能(sqlite3包)。XML和csv格式的文件也有相应的处理包。

  

第二类:系统互动

系统互动,主要指Python和操作系统(operate system)、文件系统(file system)的互动。Python可以实现一个操作系统的许多功能。它能够像bash脚本那样管理操作系统,这也是Python有时被成为脚本语言的原因。

1) Python运行控制

sys包被用于管理Python自身的运行环境。Python是一个解释器(interpreter), 也是一个运行在操作系统上的程序。我们可以用sys包来控制这一程序运行的许多参数,比如说Python运行所能占据的内存和CPU, Python所要扫描的路径等。另一个重要功能是和Python自己的命令行互动,从命令行读取命令和参数。

2) 操作系统

如果说Python构成了一个小的世界,那么操作系统就是包围这个小世界的大世界。Python与操作系统的互动可以让Python在自己的小世界里管理整个大世界。

os包是Python与操作系统的接口。我们可以用os包来实现操作系统的许多功能,比如管理系统进程,改变当前路径(相当于’cd‘),改变文件权限等,建立。但要注意,os包是建立在操作系统的平台上的,许多功能在Windows系统上是无法实现的。另外,在使用os包中,要注意其中的有些功能已经被其他的包取代。

我们通过文件系统来管理磁盘上储存的文件。查找、删除,复制文件,以及列出文件列表等都是常见的文件操作。这些功能经常可以在操作系统中看到(比如ls, mv, cp等Linux命令),但现在可以通过Python标准库中的glob包、shutil包、os.path包、以及os包的一些函数等,在Python内部实现。

subprocess包被用于执行外部命令,其功能相当于我们在操作系统的命令行中输入命令以执行,比如常见的系统命令'ls'或者'cd',还可以是任意可以在命令行中执行的程序。

4) 线程与进程

Python支持多线程(threading包)运行和多进程(multiprocessing包)运行。通过多线程和多进程,可以提高系统资源的利用率,提高计算机的处理速度。Python在这些包中,附带有相关的通信和内存管理工具。此外,Python还支持类似于UNIX的signal系统,以实现进程之间的粗糙的信号通信。

第三类:网络

现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从Ruby, JavaScript, php身上都可以感受到这一点。Python的标准库对互联网开发的支持并不充分,这也是Django等基于Python的项目的出发点: 增强Python在网络方面的应用功能。这些项目取得了很大的成功,也是许多人愿意来学习Python的一大原因。但应注意到,这些基于Python的项目也是建立在Python标准库的基础上的。

1) 基于socket层的网络应用

socket是网络可编程部分的底层。通过socket包,我们可以直接管理socket,比如说将socket赋予给某个端口(port),连接远程端口,以及通过连接传输数据。我们也可以利用SocketServer包更方便地建立服务器。

通过与多线程和多进程配合,建立多线程或者多进程的服务器,可以有效提高服务器的工作能力。此外,通过asyncore包实现异步处理,也是改善服务器性能的一个方案。

2) 互联网应用

在实际应用中,网络的很多底层细节(比如socket)都是被高层的协议隐藏起来的。建立在socket之上的http协议实际上更容易也更经常被使用。http通过request/responce的模式建立连接并进行通信,其信息内容也更容易理解。Python标准库中有http的服务器端和客户端的应用支持(BaseHTTPServer包; urllib包, urllib2包), 并且可以通过urlparse包对URL(URL实际上说明了网络资源所在的位置)进行理解和操作。

以上的介绍比较粗糙,只希望能为大家提供一个了解标准库的入口。欢迎大家一起分享标准库的使用经验。

Python标准库——走马观花的更多相关文章

  1. python标准库00 学习准备

    Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...

  2. Python标准库14 数据库 (sqlite3)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...

  3. Python标准库:内置函数hasattr(object, name)

    Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...

  4. python标准库xml.etree.ElementTree的bug

    使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...

  5. 【python】Python标准库defaultdict模块

    来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会 ...

  6. Python标准库

    Python标准库是随Python附带安装的,它包含大量极其有用的模块.熟悉Python标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决. sys模块 ...

  7. Python标准库07 信号 (signal包,部分os包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习 ...

  8. Python标准库04 文件管理 (部分os包,shutil包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令 ...

  9. Python标准库的学习准备

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准 ...

随机推荐

  1. Linux-内核缓存区和write行为

    <Unix环境高级编程> 应用缓冲技术能很明显的提高系统效率.内核与外围设备的数据交换,内核与用户空间的数据交换都是比较费时的,使用缓冲区就是为了优化这些费时的操作.其实核心到用户空间的操 ...

  2. Bitmap 之 getPixels() 的 stride

    学习Graphics中遇到位图(Bitmap)中getPixels()方法,对该方法的用法大体理解,但对其中的stride参数却不明白具体的用法以及用意,现记述过程如下: getPixels()方法的 ...

  3. asp.net之ajax

    ajax主要的作用是无刷新的情况进行提交. 常用于客户端组件信息的提交.服务器组件在asp.net中能够正常的提交,而html组件则不能正常提交,在此情况下,就可以采用jquery的方式进行数据的异步 ...

  4. c# 加密转载 备忘

    public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...

  5. Sql Server 事务隔离级别的查看及更改

    根据自身 Sql Server 的情况来自定义 事务隔离级别,将会更加的满足需求,或提升性能.例如,对于逻辑简单的 Sql Server,完全可以使用 read uncommitted 模式,来减少死 ...

  6. python_Day3[set集合,函数,全局变量之篇]

    一.set集合 1.Set集合特点:无序.不重复,可嵌套 2.set集合创建规则:set = {"123","234"} 字典创建规则:dic = {“Key” ...

  7. linux概念之用户,组及权限

    Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念 单用户多任务一个beinan用户,为了完成工作,执行了几个任务:当然beinan这个用户,其它的人还能以远程登 ...

  8. 一种JavaScript 类的设计模式

    一种JavaScript 类的设计模式尽管前面介绍了如何定义一个类,如何初始化一个类的实例,但既可以在function定义的函数体中添加成员,又可以用prototype 定义类的成员,代码显的很混乱, ...

  9. js和css内联外联注意事项

    简单说:这两个问题其实是同一个问题,但是网上找了好久也找不到方法,外联的js和css文件里不能有任何HTML的标记注释,一旦有,浏览器就疯了!一去掉就好了!!! 问题:起因是网上看到一个css的表格样 ...

  10. input绑定datapicker控件后input再绑定blur或者mouseout等问题

    input绑定datapicker控件后input再绑定blur或者mouseout等问题 问题描述:今天在修改一个东西的时候需要给一个input输入域绑定blur事件,从而当它失去焦点后动态修改其中 ...