模块和类库
1.模块(Module) 是由一组类、函数与变量所组成,这些类等都存储在文本文件中。.py是Python程序代码文件的扩展名,模块可能是使用C或是Python写成。模块文件的扩展名可能是.py(原始文本文件),或是.pyc(编译过的.py文件)。在Python目录底下的Lib文件夹中,可以找到这些模块的.py文件。
在使用某个模块前必须先使用import语句加载这个模块。
语法格式为:
import <模块名称>
内置的函数dir() 可以找到模块内定义的所有名称。使用dir(模块名称)语句,显示模块的内容,结果以一个字符串列表的形式返回。
2.类库(Package) 是由一组相同文件夹的模块所组成,类库的名称必须是sys.path 所列的文件夹的子文件夹。每一个类库的文件夹中,必须至少有一个__init__.py文件。
类库可以包含子类库,子类库的文件夹位于该文件夹之下,子类库的文件夹中,也必须至少有一个__init__.py文件。
以Python目录底下的Lib子文件夹来说,xml是一个类库。其路径为Python目录\Lib\xml,Python目录\Lib\xml文件夹内有一个__init__.py文件,其下有dom、parsers、etree和sax三个子文件夹。dom,parsers,与sax都是xml类库的子类库,每一个子文件夹都有一个_init__.py文件。
3.模块和类库的基本操作
- a、将模块改名:用户可以在Python解释器内将模块的名称,改成其他名称。
语法格式为:
import 模块 as 新名称
或是
from 模块 import 函数 as 新名称
- b、 模块的内置方法:下列都是__builtin__模块的内置方法,可以将这些方法应用在模块或是类库中。m变量代表模块或是类库。
m.__dict__:显示模块的字典
m.__doc__:显示模块的文件字符串
m.__name__:显示模块的名称
m.__file__:显示模块的完整文件路径
- c、删除模块:用户可以使用del 语句来删除加载的模块,被删除的模块即从内存内清除。
- d、 模块的命名空间:当用户在Python解释器内加载一个模块时,该模块即配置一个命名空间。
4.自定义模块
如果想将自定义的Python源文件作为模块导入,可以使用import语句。当解释器遇到import语句,会在当前路径下搜索该模块文件。
一个模块只会被导入一次
当适用import语句时,Python解释器会按如下搜索顺序从这些目录中去寻找引入模块:
- a、解释器在当前目录中搜索模块的文件
- b、到sys.path变量中给出的目录列表中查找
- c、Python默认安装路径中搜索模块的文件
注意: 当前目录下定义的文件不能和标准模块重名,否则在导入标准模块时将会把那些定义的文件当成模块来加载,引发错误。
若想要使用一个存放在其他目录的Python程序,或者是其他系统的Python程序,可将这些Python程序制作成一个安装包并安装到本地,安装的目录可以选择sys.path文件中的任意一个目录。这样就可以在任何想要使用该Python程序的地方,直接使用import导入即可。
5.运行期服务模块
该模块组包含Python解释器以及环境变量相关的模块
5.1)、sys模块: 用于存取跟Python解释器有关联的系统相关参数,包括变量与函数
- a、sys.argv:此对象包含应用程序的参数列表,argv[0]是应用程序的名称,argv[1]是应用程序的第一个参数,argv[2]是应用程序的第二个参数,以下类推。
- b、sys.builtin_module_names:一个元组对象,包含所有与Python解释器编译在一起的模块名称字符串。
- c、sys.copyright:一个Python相关著作权信息的字符串
5.2)、type模块: 包含Python内置类型的名称。可以使用Python解释器的type(obj)内置函数得到obj对象的内置类型。
5.3)operator模块: 含有所有Python标准运算符相对应的函数,operator模块是使用C语言写成的。例如:
- a+b等于operator.add(a,b)或是operator.add(a,b)
- a-b等于operator.sub(a,b)或是operator.sub(a,b)
- a*b等于operator.mul(a,b)或是operator.mul(a,b)
- a/b等于operator.truediv(a,b)或是operator.truediv(a,b)
6.字符串处理模块
该模块组提供各种操作字符串的函数
6.1)string模块: 提供一般的字符串操作函数与常量
- a、string.capword(s):此函数先使用split()函数将字符串s分割,再使用capitalize()函数将每一个分割字符串的第一个字符转换成大写,最后使用join()函数将所分割的字符串连结起来。
- b、string.digits:字符串“0123456789”
- c、string.hexdidits:字符串“0123456789ABCDEF”,表示十六进制的各种字符
- d、string.octdidits:字符串“01234567”,表示八进制的各种字符
- e、string.whitespace:“字符串\t\n\x0b\x0c”。
6.2)re模块: 用来使用正则表达式(regular expression)运算。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获取匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他操作。
6.3)struct模块: 用于将Python的数据与二进制数据结构进行转换,转换后的二进制数据可应用于C语言和网络传输协议内。
- a、struct.pack(fmt,v1,v2,…):将数值v1,v2等依照ftm的格式转换成字符串
- b、struct.unpack(fmt,string):将字符串strin依照fmt的格式转换成需要的数值
- c、struct.calcsize(fmt):返回fmt结构的大小,即转换后的字符串大小
7.附属服务
- a、math模块:提供标准的数学函数和常量。只接受整数和浮点数,不接受复数。提供两个标准常量:数学常量pi和e
- b、random模块:用于做随机存取与产生随机数
b.1)random.choice(seq):从列表seq中随机选取一个元素
b.2)random.random(): 返回一个随机的浮点数,数值介于0.0与1.0之间
8.一般操作系统服务
9.其他模块组