今天介绍模块。
模块
任何程序都可以作为模块,但是除了预置位置外,我们要告诉程序去哪里查找:
import sys
sys.path.append('C:/It/IS/A/PATH')
模块只能导入一次(多次不会报错但效果和一次相同)。
我们可以查看模块目录列表哪里:
import sys,pprint
pprint.pprint(sys.path)
其中,site-packages是py解释器专门存放模块的地方。
pprint可以打印多行数据,而不必使用print。不过,让别人使用你编写的模块,还需要打包,详见packaging.python.org。
包
我们可以将模块编组为包,包是另一种模块,但它们可包含其他模块。包是一个目录,若要被识别为包,其中要有__init__.py
文件。我们可以在包中嵌套其他的包。
探索模块
我们可以使用dir列出某个模块中包含的全部函数:
import math
print([dir(math)])
我们也可以使用help查看模块或函数的帮助(如果有)。
import math
print(help(math))
print(help(math,pi))
我们刚才用dir的时候一定看到了一个__doc__
的函数,那是模块作者的说明文档,我们可以直接用print打印。
常用的模块
常用的模块有sys,os,fileinput,time,random,shelve和json,re。
这里是官方给出的所有预置模块:https://docs.python.org/zh-cn/3/library/index.html。
集合,堆,栈,队列
集合
我们可以直接创建一个集合。
print(set(range(10)))
集合和字典一样,用花括号表示。下面是一些常见的运算:
a={1,2,3}
b={2,3,4}
print(a.union(b))
print(a|b)
print(a&b)
print(a.intersection(b))
print((a&b).issubset(a))
print(a&b<=a)
print(a-b)
print(a.difference(b))
print(a.symmetric_difference(b))
print(a^b)
print(a.copy())
print(a.copy() is a)
堆
python并没有堆类型,堆用列表表示,有一个模块heapq来操作。
函数 | 作用 |
---|---|
heappush(heap,x) | 将x压入堆中 |
heappop(heap) | 从堆中弹出最小的元素 |
heapify(heap) | 让列表具备堆特征 |
heapreplace(heap,x) | 弹出最小的元素,并将x压入堆中 |
nlargest(n,iter) | 返回iter中n个最大的元素 |
nsmallest(n,iter) | 返回iter中n个最小的元素 |
前四个函数与堆操作直接相关,其中除了第三个以外必须让列表具有堆特征。
后两个函数也推荐在一般的列表中使用。
栈和队列
栈完全可以通过列表操作实现。
模块collections中包含类型deque和其他几个集合类型。
下面是一些常用的方法
from collections import deque
q=deque(range(5))
q.append(5)
q.appendleft(6)
print(q)
q.pop()
q.popleft()
print(q)
q.rotate(3)
print(q)
q.rotate(-1)
print(q)
明天挑几个模块说一说。