模块 sys 让你能够访问与 Python 解释器紧密相关的变量和函数。
函数/变量 | 说明 |
---|---|
argv | 命令行参数,包括脚本名 |
exit([arg]) | 退出当前程序,可通过可选参数指定返回值或错误消息 |
modules | 一个字典,将模块名映射到加载的模块 |
path | 一个列表,包含要在其中查找模块的目录名称 |
platform | 一个平台标识符,如 sunos5 或 win32 |
stdin | 标准输入流——一个类似于文件的对象 |
stdout | 标准输出流——一个类似于文件的对象 |
stderr | 标准错误流——一个类似于文件的对象 |
[root@li python]# vim reverseargs.py
[root@li python]# cat reverseargs.py
import sys
args = sys.argv[1:]
args.reverse()
print(' '.join(args))
[root@li python]# python3 reverseargs.py this is a test
test a is this
模块 os 让你能够访问多个操作系统服务。
函数/变量 | 说明 |
---|---|
environ | 包含环境变量的映射 |
system(command) | 在子 shell 中执行操作系统命令 |
sep | 路径中使用的分隔符 |
pathsep | 分隔不同路径的分隔符 |
linesep | 行分隔符(’\n’、’\r’或’\r\n’) |
urandom(n) | 返回 n 个字节的强加密随机数据 |
模块 fileinput 让你能够轻松地迭代一系列文本文件中的所有行。
函数/变量 | 说明 |
---|---|
input([files[,inplace[,backup]]]) | 帮助迭代多个输入流中的行 |
filename() | 返回当前文件的名称 |
lineno() | 返回(累计的)当前行号 |
filelineno() | 返回在当前文件中的行号 |
isfirstline() | 检查当前行是否是文件中的第一行 |
isstdin() | 检查最后一行是否来自 sys.stdin |
nextfile() | 关闭当前文件并移动到下一个文件 |
close() | 关闭序列 |
集合是由内置类 set 实现的。这意味着你无需导入类,就可直接创建集合:
>>> set(range(10))
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
可使用序列(或其他可迭代对象)来创建集合,也可使用花括号显示地指定。请注意,不能仅使用花括号来创建空集合,因为这将创建一个字典。
>>> type({})
<class 'dict'>
集合主要用于成员资格检查,因此将忽略重复的元素:
>>> {0,0,1,2,1,4,5,5,5,4}
{0, 1, 2, 4, 5}
与字典一样,集合中的元素排列顺序是不一样的。
除了成员资格检查外,还可执行各种标准集合操作,如并集和交集:
>>> a = {1,2,3}
>>> b = {2,3,4}
>>> a.union(b)
{1, 2, 3, 4}
>>> a | b
{1, 2, 3, 4}
还有一些其他的方法和运算符:
>>> c = a & b
>>> c.issubset(a)
True
>>> c <= a
True
>>> c.issuperset(a)
False
>>> c >= a
False
>>> a.intersection(b)
{2, 3}
>>> a & b
{2, 3}
>>> a.difference(b)
{1}
>>> a - b
{1}
>>> a ^ b
{1, 4}
>>> a.copy()
{1, 2, 3}
>>> a.copy() is a
False
集合是可变的,因此不能用作字典的键。另一个问题是,集合只能包含不可变的值,因此不能包含其他集合。
>>> a = set()
>>> b = set()
>>> a.add(b)
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: unhashable type: 'set'
构造函数 forzenset 创建给定集合的副本。在需要将集合作为另一个集合的成员或字典中的键时,很有用。
是一种优先队列,可以让你能够以任意顺序添加对象,并随时找出(并删除)最小的元素。模块名为 heapq。
函数/变量 | 说明 |
---|---|
heappush(heap,x) | 将 x 压入堆中 |
heappop(heap) | 从堆中弹出最小的元素 |
heapify(heap) | 让列表具备堆特征 |
heapreolace(heap,x) | 弹出最小的元素,并将 x 压入堆中 |
nlargest(n,iter) | 返回 iter 中 n 个最大的元素 |
nsmallest(n,iter) | 返回 iter 中 n 个最小的元素 |
>>> from heapq import *
>>> from random import shuffle
>>> data = list(range(10))
>>> shuffle(data)
>>> heap = []
>>> for n in data:
... heappush(heap,n)
...
>>> heap
[0, 1, 6, 2, 4, 7, 9, 8, 3, 5]
>>> heappush(heap,0.5)
>>> heap
[0, 0.5, 6, 2, 1, 7, 9, 8, 3, 5, 4]
就是数据结构中的大顶堆,也就是说,还是有一定的排列顺序的。
>>> heappop(heap)
0
>>> heappop(heap)
0.5
>>> heappop(heap)
1
>>> heap
[2, 3, 6, 5, 4, 7, 9, 8]
>>> heap = [5,8,0,3,6,7,9,1,4,2]
>>> heapify(heap) #就是调整堆的过程
>>> heap
[0, 1, 5, 3, 2, 7, 9, 8, 4, 6]
在需要按添加元素的顺序删除时,双端队列很有用。
>>> from collections import deque
>>> q = deque(range(5))
>>> q.append(5)
>>> q.appendleft(6)
>>> q
deque([6, 0, 1, 2, 3, 4, 5])
>>> q.pop()
5
>>> q.popleft()
6
>>> q.rotate(3)
>>> q
deque([2, 3, 4, 0, 1])
>>> q.rotate(-1)
>>> q
deque([3, 4, 0, 1, 2])
模块 time 用于获取当前时间、操作时间和日期、从字符串中读取时间、将日期格式化为字符串格式等。
Python 日期元组中的字段 | ||
---|---|---|
索引 | 字段 | 值 |
0 | 年 | |
1 | 月 | 1~12 |
2 | 日 | 0~31 |
3 | 时 | 0~23 |
4 | 分 | 0~59 |
5 | 秒 | 0~61 |
6 | 星期 | 0~6,其中 0 代表星期一 |
7 | 儒略日 | 1~366 |
8 | 夏令时 | 0、1或 -1 |
函数/变量 | 说明 |
---|---|
asctime([tuple]) | 将时间元组转换为字符串 |
localtime([secs]) | 将秒数转换为当地时间的日期元组 |
mktime(tuple) | 将时间元组转换为当地时间 |
sleep(secs) | 休眠(什么也不做)secs 秒 |
strptime(string[,format]) | 将字符串转换为时间元组 |
time() | 当前时间(从新纪元开始后的秒数) |
>>> import time
>>> time.time()
1596703340.4325356
>>> time.asctime()
'Thu Aug 6 16:42:39 2020'
模块 random 包含生成伪随机数的函数。
函数 | 说明 |
---|---|
random() | 返回一个 0~1(含)的随机数 |
getrandbits(n) | 以长整数方式返回 n 个随机地二进制数 |
uniform(a,b) | 返回一个 a~b(含)的随机实数 |
randrange([start],stop,[step]) | 从 range(start,stop,step) 中随机地选择一个数 |
choice(seq) | 从序列 seq 中随机地选择一个元素 |
shuffle(seq[,random]) | 就地打乱序列 seq |
sample(seq,n) | 从序列 seq 中随机地选择 n 个值不同的元素 |