Python内置了许多标准模块,例如sys、os、random和time模块等,下面为大家介绍几个常用的标准模块。
1.sys模块
sys模块中提供了一系列与Python解释器交互的函数和变量,用于操控Python的运行时环境。sys模块中常用变量与函数如表1所示。
表1 sys模块的常用变量与函数
下面通过一些示例来演示sys模块中部分变量和函数的用法。
(1)argv变量
通过import语句导入sys模块,然后访问argv变量获取命令行参数列表,具体代码如下:
import sys
print(sys.argv)
运行代码,结果如下所示。
程序退出
2.os模块
os模块中提供了访问操作系统服务的功能,该模块中常用函数如表8-2所示。
表2 os模块的常用函数
下面通过一些示例来演示os模块中部分函数的用法。
(1)getcwd()函数
通过os模块中的getcwd()函数获取当前的工作路径,示例代码如下。
import os
print(os.getcwd()) # 获取当前的工作路径
运行代码,结果如下所示。
D:\Python项目\模块使用
(2)exit()函数
os模块中也有终止程序的函数——_exit(),该函数与sys模块中的exit()函数略有不同。执行os模块中的exit()函数后,程序会立即结束,之后的代码也不会再执行;而执行sys模块中的exit()函数会引发一个SystemExit异常,若没有捕获该异常退出程序,后面的代码不再执行;若捕获到该异常,则后续的代码仍然会执行。关于os和sys模块的exit()函数的用法比较如下。
使用os模块中的_exit()函数终止程序,示例代码如下:
import os
print("执行_exit()之前")
try:
os._exit(0)
print("执行_exit()之后")
except:
print("程序结束")
运行代码,结果如下所示。
执行_exit()之前
由以上结果可知,程序在执行完“os._exit(0)”代码后立即结束,不再执行后续的代码。
使用sys模块中的exit()函数终止程序,示例代码如下:
import sys
print("执行_exit()之前")
try:
sys.exit(0)
print("执行_exit()之后")
except:
print("程序结束")
运行代码,结果如下所示。
执行_exit()之前
程序结束
由以上结果可知,程序执行完“sys.exit(0)”代码后没有立即结束。由于try子句中捕获了SystemExit异常,因此try子句后续的代码不再执行,而是继续执行异常处理except子句。
(3)chdir ()函数
os模块中还提供了修改当前工作路径的chdir()函数,示例代码如下:
import os
path = r"D:\Python项目\井字棋V1.0"
# 查看当前工作目录
current_path = os.getcwd()
print(f"修改前工作目录为{current_path}")
# 修改当前工作目录
os.chdir(path)
# 查看修改后的工作目录
current_path = os.getcwd()
print(f"修改后工作目录为{current_path}")
上述代码首先使用getcwd()函数获取当前的工作路径,然后通过chdir()函数修改了当前的工作路径。
运行代码,结果如下所示。
修改前工作目录为D:\Python项目\模块使用
修改后工作目录为D:\Python项目\井字棋V1.0
3.random模块
random模块用于生成随机数,它提供了很多函数。接下来,针对常见的随机数函数进行讲解,具体如下。
(1)random.random()
返回0与1之间的随机浮点数N,范围为0 <= N < 1.0。
接下来,通过一个案例来演示random()的使用,具体代码如下所示:
import random
# 生成第1个随机数
print("random():", random.random())
# 生成第2个随机数
print("random():", random.random())
运行代码,结果如图所示。
(3)random.randint(a,b)
返回一个随机的整数N,N的取值范围为a <= N <= b。需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值,示例代码如下:
import random
# 生成的随机数为N,N的取值范围为12 <= N <= 20
print(random.randint(12, 20))
# 生成的随机数为N,N的结果永远是20
print(random.randint(20, 20))
# print(random.randint(20, 10)) # 该语句是错误的,下限(a)必须小于上限(b)。
运行代码,结果如图所示。
(4)random.randrange([start], stop[, step])
返回指定递增基数集合中的一个随机数,基数默认值为1。其中,start参数用于指定范围内的开始值,其包含在范围内;end参数用于指定范围内的结束值,其不包含在范围内;step表示递增基数。
上述这些参数必须为整数。例如,random.randrange (10, 100, 2)相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。
(5)random.choice(sequence)
从sequence中返回一个随机的元素。其中,sequence参数可以是列表、元组或字符串。示例代码如下:
random.choice("学习Python")
random.choice(["JGood","is", "a","handsome", "boy"])
random.choice(("Tuple","List", "Dict"))
需要注意的是,若sequence为空,则会引发IndexError异常。
(6)random.shuffle (x[,random])
用于将列表中的元素打乱顺序,俗称为洗牌。示例代码如下:
demo_list = ["Python", "is", "powerful", "simple", "and so on..."]
random.shuffle(demo_list)
print(demo_list)
# ---- 结果(不同机器上的结果可能不一样。)
# ['powerful', 'simple', 'is', 'Python', 'and so on...']
(7)random.sample(sequence,k)
从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列。示例代码如下:
list_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(list_num, 5) # 从list_num中随机获取5个元素,作为一个片断返回
print(slice)
print(list_num) # 原有序列并没有改变。
4.time模块
time模块中提供了一系列处理时间的函数,常用函数的说明如表3所示。
表3 time模块的常用函数
下面通过一些示例来演示time模块中部分函数的用法。
(1)time()函数
通过time()函数获取当前的时间,利用此特性计算程序的执行时间,示例代码如下。
import time
before = time.time()
# 计算1000的10000次方
result = pow(1000, 10000)
after = time.time()
interval = after - before
print(f"运行时间为{interval}秒")
上述代码首先导入了time模块,使用time()函数获取了当前的时间,然后使用pow()函数计算1000的10000次方,在计算该结果时会产生一定的计算时间,计算结束后再次使用time()函数获取当前的时间,最后计算两个时间的差值,以得到程序执行的时间。
运行代码,结果如下所示。
运行时间为0.0009999275207519531秒
(2)sleep()函数
如果在开发过程中需要对某个功能或某段代码设置执行时间间隔,那么可以通过sleep()函数实现。sleep()函数会让程序进入休眠,并可自由设定休眠时间。
接下来,通过一个示例来演示sleep()函数的用法,具体代码如下。
import random, time
name_li1 = ["李飞", "张羽", "赵韦", "王忠", "杜超"]
name_li2 = []
for i in range(len(name_li1)): # 设置循环次数
people = random.choice(name_li1) # 随机选择一个元素
name_li1.remove(people) # 为避免出现重复元素,移除已选择元素
name_li2.append(people) # 添加到name_li2列表中
time.sleep(2) # 每隔2s执行一次
print(f"此时的成员有{name_li2}")
上述代码首先导入了random模块与time模块,然后定义了两个列表name_li1与name_li2, 遍历列表name_li1,调用choice()函数随机选择一个元素,并将随机获取的元素每隔2秒添加到列表name_li2中,直至全部添加。
运行代码,结果如下所示。
此时的成员有['张羽']
此时的成员有['张羽', '赵韦']
此时的成员有['张羽', '赵韦', '杜超']
此时的成员有['张羽', '赵韦', '杜超', '王忠']
此时的成员有['张羽', '赵韦', '杜超', '王忠', '李飞']
(3)strptime()函数与mktime()函数
如果在开发程序的过程中需要自定义时间戳,那么time模块的strptime()函数与mktime()函数是最好的选择,使用它们可以快速生成时间戳,具体代码如下。
import time
str_dt = "2019-02-25 17:43:54"
# 转换成时间数组
time_struct = time.strptime(str_dt, "%Y-%m-%d %H:%M:%S")
# 转换成时间戳
timestamp = time.mktime(time_struct)
print(timestamp)
运行代码,结果如下所示。
1551087834.0
(4)strftime()函数
strftime()函数来格式化日期,其定义格式如下:
time.strftime(format[, t])
接下来,通过一个案例来演示strftime()函数的使用,具体代码如下所示:
import time
# 格式化成2016-03-20 11:45:39形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 格式化成Sat Mar 28 22:24:24 2016形式
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# 将格式字符串转换为时间戳
time_word = "Sat Mar 28 22:24:24 2016"
print(time.mktime(time.strptime(time_word, "%a %b %d %H:%M:%S %Y")))
运行代码,结果如图4所示。
5.calendar模块
calendar模块有很广泛的方法用来处理年历和月历,如打印某月的月历,具体代码如下所示:
import calendar
calendar_january = calendar.month(2016, 1)
print("以下输出2016年3月份的日历:")
print(calendar_january)
运行代码,结果如图所示。
除此之外,calendar模块还提供了很多内置函数,具体如表4所示。
表4 calendar模块的常见函数
python教程
python教程,8天python从入门到精通