第 8 章 库
8.1 标准库
Python 提供了大量的标准库以便用户开发项目,本节主要介绍标准库及其使用方法。在使用标准库时,需要将标准库导入代码文件。
8.1.1 标准库的介绍
标准库是 Python 自带的库,无须下载,可直接使用。标准库的目录地址可以通过以下代码获取:
python
import sys
print(sys.exec_prefix)
该代码中的sys.exec_prefix可用于获取当前 Python 的安装目录地址。
plaintext
C:\Users\Administrator\AppData\Local\Programs\Python\Python37
注意不同操作系统的 Python 的安装目录地址是不同的,这里展示的是笔者计算机上的 Python 的安装目录地址。
以上路径为 Python 的安装目录地址,而标准库在该目录地址下的 Lib 文件夹中。Python 自带的标准库涉及的领域非常多,包含时间模块、随机库模块、正则表达式模块、图形界面模块、网络通信模块、网络爬虫模块、绘图模块、邮件收发模块、网页设计模块等。
8.1.2 标准库的导入方法
在代码中如果需要使用 Python 自带的标准库,可以使用保留字from和import导入相应的标准库。Python 自带的标准库是 Python 官方团队提前写好的代码文件或文件夹,所以导入库的原理与文件中导入类的原理相同。以下以标准库time为例,其导入方法如下:
python
import time #导入整个time库
from time import sleep #导入time库中的sleep()函数
from time import * #导入time库中的全部函数
import time as t #导入整个time库,并且定义别名为t
8.2 时间库
Python 标准库中的time库主要用于获取当前时间和设置时间的格式。在使用time库之前需要使用import将time库导入代码文件。
8.2.1 获取时间戳
时间戳表示当前时间与 1970 年 1 月 1 日 0 时 0 分 0 秒的时间差(以秒为单位)。
示例代码:
python
01 import time
02 a = time.time()
03 print(a)
第 1 行代码使用import导入time库,第 2 行代码使用time库中的time()函数获取时间戳。
代码执行结果:
plaintext
17622874693.6661327
注意读者执行代码后的输出结果会与该结果有差异,原因在于
time.time()获取的是当前时间与 1970 年 1 月 1 日 0 时 0 分 0 秒的时间差,读者执行代码的时间与笔者编写本书的时间是不一致的。
一个程序是否优良可以通过其运行的稳定性和运行速度来判定,time()方法不仅可以检测程序代码在何时被执行,还可以测量程序的运行速度。
示例代码(测量循环运行时间):
python
运行
01 import time
02 start = time.time()
03 i = 1
04 while i<100000000:
05 i += 1
06 end = time.time()
07 print('代码启动时间:',start,'\n停止时间:',end,'\n执行时间:',end-start)
- 第 2 行代码中的
time.time()函数用于获取当前的时间戳,即从 1970 年 1 月 1 日 0 时 0 分 0 秒到当前的时间差。 - 第 3~5 行代码表示执行
while循环 100000000 次,主要用于模拟代码运行消耗的时间。 - 第 6 行代码再次使用
time.time()函数获取当前时间戳,start和end获取的时间戳是不同的。
plaintext
代码启动时间: 1777293846.1712599
停止时间: 1777293848.914736
执行时间: 2.743476152420044
如果在while循环中加入print()输出语句,执行时间则会大大增加,因为print()语句在输出信息时需要 CPU 进行 I/O 操作,需要耗费的时间就会增多。
示例代码(带 print 语句的循环):
python
01 import time
02 start = time.time()
03 i = 1
04 while i<100000000:
05 print(i)
06 end = time.time()
07 print('代码启动时间:',start,'\n停止时间:',end,'\n执行时间:',end-start)
执行代码后耗费时间为 1068.2438850402832 秒。
优化版本(写入文件代替 print):
python
01 import time
02 with open('o.txt','w') as f:
03 start = time.time()
04 i = 1
05 while i<100000000:
06 i += 1
07 f.write(str(i))
08 end = time.time()
09 print('代码启动时间:',start,'\n停止时间:',end,'\n执行时间:',end-start)
执行代码后所耗费的时间为 68.09210014343262 秒,相比使用print()语句消耗的时间减少约 93.6%。
8.2.2 时间休眠
当要让代码程序在执行前等待一段时间,可以使用sleep(参数)来实现,其中参数为程序休眠的时长,可以是小数或整数,单位为秒。
示例代码:
python
01 import time
02 time.sleep(10)
03 print('此消息10秒后输出')
第 2 行代码设置程序休眠 10 秒钟,即在 10 秒后才开始执行第 3 行代码。
补充
time库中还有很多其他的方法,读者可以使用dir(time)来获取time库中的所有方法,还可以使用help(time.方法)的形式获取相应方法的说明。
8.3 随机库(重要)
随机库可用于产生随机数据,例如抽奖游戏中,从用户选择 “开始抽奖” 起,系统会随机抽取 “奖盘” 中的一个奖项。要想实现使用代码生成随机数据,可以使用标准库random,在使用前需要通过import random导入random库。
8.3.1 随机生成数值
在random库中可以随机生成数值的方法有uniform()、random()、randint()、randrange()等。
uniform() 方法
uniform(参数1, 参数2)方法用于生成参数 1 到参数 2 之间的随机小数。示例代码:
python
01 import random
02 a = random.uniform(1,5)
03 print(a)
执行代码后的输出结果为3.798178712316873,每次运行结果都可能不同。
random() 方法
random()方法用于生成 0~1(不包含 1)的随机小数,无须填入参数。示例代码:
python
01 import random
02 a = random.random()
03 print(a)
执行代码后的输出结果为0.020160160311477493,每次运行结果都可能不同。
randint() 方法
randint(参数1, 参数2)方法用于生成参数 1 到参数 2 之间的整数。示例代码:
python
01 import random
02 a = random.randint(2,9)
03 print(a)
执行代码后将输出一个 2~9 的整数,结果为7。
randrange() 方法
randrange(参数1, 参数2, 参数3)方法用于生成在参数 1 到参数 2 之间且步长为参数 3 的随机整数。示例代码:
python
01 import random
02 a = random.randrange(0,20,5)
03 print(a)
执行代码后的输出结果为10。
8.3.2 随机选择
random库中的choice()、shuffle()、sample()函数可以实现从一些数据中随机选择一个或多个元素。
choice() 函数
choice(参数)用于从参数中随机选择一个元素,参数通常是序列类型数据(列表、字符串)。示例代码:
python
01 import random
02 ls = ['一等奖','二等奖','三等奖','谢谢惠顾']
03 a = random.choice(ls)
04 print(a)
第 3 行代码从列表ls中随机选取一个元素,笔者执行代码后的输出结果为谢谢惠顾,每次运行的结果都可能不同。
shuffle() 函数
shuffle(参数)用于将参数中的元素随机打乱,参数是序列类型数据。示例代码:
python
01 import random
02 ls = ['一等奖','二等奖','三等奖','谢谢惠顾']
03 random.shuffle(ls)
04 print(ls)
plaintext
['一等奖', '三等奖', '谢谢惠顾', '二等奖']
sample() 函数
sample(参数1, 参数2)用于从参数 1 中随机选取参数 2 个元素,其中参数 1 为序列类型数据,参数 2 为整数。示例代码:
python
01 import random
02 ls = ['一等奖','二等奖','三等奖','谢谢惠顾']
03 a = random.sample(ls,2)
04 print(a)
plaintext
['一等奖', '谢谢惠顾']
8.3.3 随机种子
在某些场景下并不希望用户每次运行代码后的结果都不相同,例如抽奖场景,这时需要用到随机种子seed()函数。
python
random.seed(种子)
功能:在随机数中设置一个随机种子,下一次随机获取的值必须由该随机种子发出。参数种子:可以是任何数据类型的,例如整数类型或字符串类型。
示例代码:
python
01 import random
02 ls = ['一等奖','二等奖','三等奖','谢谢惠顾']
03 random.seed('张三')
04 print(random.choice(ls))
05 random.seed('王五')
06 print(random.choice(ls))
plaintext
二等奖
谢谢惠顾
注意由于设置了随机种子,因此每次执行代码后的输出结果都是相同的,且不受运行的限制。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)