Python内部的秘密——模块与类库

模块和类库

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.其他模块组
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用模块 python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的。 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能。 * pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或数据库存储。(pickle的过程也被称serializing,marshalling或者flattening,pickle同时可以用来将bytes流反序列化为python的对象)。 * sys:sys模块包含了跟python解析器和环境相关的变量和函数。 * 其他: atexit,gc,inspect,marshal,traceback,types,warnings,weakref。 2)数学 * decimal:python中的float使用双精度的二进制浮点编码来表示的,这种编码导致了小数不能被精确的表示,例如0.1实际上内存中为0.100000000000000001,还有3*0.1 == 0.3 为False. decimal就是为了解决类似的问题的,拥有更高的精确度,能表示更大范围的数字,更精确地四舍五入。 * math:math模块定义了标准的数学方法,例如cos(x),sin(x)等。 * random:random模块提供了各种方法用来产生随机数。 * 其他:fractions,numbers。 3)数据结构,算法和代码简化 * array: array代表数组,类似与list,与list不同的是只能存储相同类型的对象。 * bisect: bisect是一个有序的list,其中内部使用二分法(bitsection)来实现大部分操作。 * collections:collections模块包含了一些有用的容器的高性能实现,各种容器的抽象基类,和创建name-tuple对象的函数。例如包含了容器deque,defaultdict,namedtuple等。 * heapq:heapq是一个使用heap实现的带有优先级的queue。 * itertools:itertools包含了函数用来创建有效的iterators。所有的函数都返回iterators或者函数包含iterators(例如generators 和generators expression)。 * operator: operator提供了访问python内置的操作和解析器提供的特殊方法,例如 x+y 为 add(x,y),x+=y为iadd(x,y),a % b 为mod(a,b)等等。 * 其他:abc,contextlib,functools。 4) string 和 text 处理 *codecs:codecs模块被用来处理不同的字符编码与unicode text io的转化。 * re:re模块用来对字符串进行正则表达式的匹配和替换。 * string:string模块包含大量有用的常量和函数用来处理字符串。也包含了新字符串格式的类。 * struct:struct模块被用来在python和二进制结构间实现转化。 * unicodedata:unicodedata模块提供访问unicode字符数据库 5) python数据库访问 * 关系型数据库拥有共同的规范Python Database API Specification V2.0,MySQL,Oracle等都实现了此规范,然后增加自己的扩展。 * sqlite3: sqlite3 模块提供了SQLite数据库访问的接口。SQLite数据库是以一个文件或内存的形式存在的自包含的关系型数据库。 * DBM-style 数据库模块python提供了打了的modules来支持UNIX DBM-style数据库文件。dbm模块用来读取标准的UNIX-dbm数据库文件,gdbm用来读取GNU dbm数据库文件,dbhash用来读取Berkeley DB数据库文件。所有的这些模块提供了一个对象实现了基于字符串的持久化的字典,他与字典dict非常相似,但是他的keys和values都必须是字符串。 * shelve:shelve模块使用特殊的“shelf”对象来支持持久化对象。这个对象的行为与dict相似,但是所有的他存储的对象都使用基于hashtable的数据库(dbhash,dbm,gdbm)存储在硬盘。与dbm模块的区别是所存储的对象不仅是字符串,而且可以是任意的与pickle兼容的对象。 6)文件和目录处理 * bz2:bz2模块用来处理以bzip2压缩算法压缩的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值