Python的标准模块介绍:sys、os、random和time

news2024/10/7 4:28:21

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从入门到精通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/366074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apifox = Postman + Swagger + Mock + JMeter

目录 可视化API设计 高效 & 零学习成本 可复用的“数据模型” 遵循 OpenAPI(Swagger) 规范 可导入 Swagger 等 20 数据格式 具体使用尝鲜 多项目管理 支持多环境切换 支持IDEA、浏览器、桌面应用 Idea插件 公共API hub库 如题&#xff1a;一款非常好用的API管理测…

二叉树——最大二叉树

最大二叉树 链接 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums…

浅谈面向过程和面向对象的区别

面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。 伴随着每个开发人员的职业生涯&#xff0c;或多或少都会接触到这两种软件设计思想。不仅是软件开发人员&#xff0c;其实这两种思想在我们平时的生活中也处处可见&a…

uniapp 超过2m无法上传代码!uni-module太大了,小程序无法上传怎么办?

问题描述&#xff1a; 虽然分包了。但是主包里还有很多uniui的组件&#xff0c;占了2m多&#xff0c;之前一直是点击运行&#xff0c;然后再上传代码。提示的超过2m无法上传。 解决办法&#xff1a; 点击发行&#xff0c;然后上传就可以了。 优化建议&#xff1a; 1、组件按…

面向对象的一点小想法

接口里的方法可以写也可以不写 如果写的话&#xff0c;那么得是默认方法&#xff0c;需要在前面加个default 对于默认方法&#xff0c;能够重写&#xff0c;或者直接继承&#xff08;也就是直接用&#xff09; 比如下面&#xff1a; 就直接调用了接口的默认函数nibuhao&#…

MongoDB安装和使用过程常见问题

文章目录一、安装过程显示没有相应的权限二、pymongo无法使用&#xff0c;报错一、安装过程显示没有相应的权限 oh我的天&#xff0c;找了网上很多种方法都不行哈哈 不同的电脑对应不同的问题吧~ 我的这个问题是这样解决滴 先直接简述操作路径&#xff0c;不明白的可以看如下图…

程序员生产力工具大全,软件开发者常用的工具有哪些?

有哪些神器&#xff0c;可以帮助程序员提高工作效率&#xff1f; 每一位程序员&#xff0c;都希望能在编程世界中实现自己的梦想。程序员是一个要不断向上攀爬的职业&#xff0c;需要学习新的知识&#xff0c;掌握新的工具&#xff0c;才能跟上时代的步伐。 工欲善其事&#…

Linux PWM 开发指南

Linux PWM 开发指南 1 概述 1.1 编写目的 介绍 PWM 模块的详细设计方便相关人员进行 PWM 模块的代码设计开发。 1.2 使用范围 适用于 Linux-3.10&#xff0c;linux-4.4 和 Linux-4.9 内核&#xff0c;Linux-5.4 内核。 1.3 相关人员 PWM 驱动的开发人员/维护人员等 2 术…

2022 赣育杯 CTF --- Crypto Lost_N wp

文章目录前言题目解题过程解题代码前言 这是去年江西省赛一道有点小坑的密码题&#xff0c;当时没做出来&#xff0c;今天回想起来重新做一下并且记录一下。 题目 Lost_N.py import gmpy2 from Crypto.Util.number import * # part1 flag bSangFor{} d getPrime(435) cou…

一篇文章弄清楚啥是数组和集合

数组和集合多语言都有&#xff0c;数组是集合的一种&#xff0c;是一种有序的集合&#xff0c;不面向对象&#xff0c;面向过程的也有。1.数组逻辑结构&#xff1a;线性的物理结构&#xff1a;顺序的存储结构申请内存&#xff1a;一次申请一大段连续的空间&#xff0c;一旦申请…

JAVA虚拟机JVM之内存模型

内存模型 java 内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清&#xff0c;【java 内存模型】是 Java Memory Model&#xff08;JMM&#xff09;的意思。 关于它的权威解释&#xff0c;请参考 https://download.oracle.com/otn-pub/jcp/memory_model-1.0…

【C++】string的9道OJ题

要么庸俗&#xff0c;要么孤独… 文章目录一、仅仅反转字母二、字符串中的第一个唯一字符&#xff08;计数排序的思想&#xff09;三、字符串相加&#xff08;做好加进位的工作即可&#xff09;四、把字符串转换成整数五、反转字符串中的单词 III六、字符串相乘&#xff08;高…

惠普庆祝在中国40年,强化中国发展战略

中国北京&#xff0c;2023年2月23日 ——今日&#xff0c;“品质信赖向未来” 惠普在中国40年系列活动启动仪式及惠普打印春季新品发布会在北京盛大举行。现场&#xff0c;惠普回顾了40年来与中国经济及产业共同发展的历程&#xff0c;并再次强调了惠普一以贯之的“在中国&…

3.GORM介绍和使用

目录 来源 什么是ORM ORM的优缺点 gorm介绍 安装 连接数据库 连接MySQL 连接PostgreSQL 连接Sqlite3 连接SQL Server GORM基本示例 Docker快速创建MySQL实例 创建数据库 GORM操作MySQL GORM Model定义 gorm.Model 模型定义示例 结构体标记&#xff08;tags&a…

力扣-文章浏览

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1148. 文章浏览二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.其他总结前言 一、题目&#xff1a;1148…

立项近7年,索尼产品经理分享PS VR2开发背后的故事

备受期待的索尼PS VR2终于正式发售&#xff0c;VR爱好者们终于有机会体验到《地平线&#xff1a;山之呼唤》等PS VR2独占的VR大作。近期&#xff0c;为了解PS VR2头显诞生背后的故事&#xff0c;外媒AV Watch采访到PS VR2的开发负责人Yasuo Takahashi&#xff0c;在本次采访中&…

尚医通 (二十二)微信支付

目录一、微信支付介绍1、微信扫码支付申请2、开发文档3、微信支付SDK二、微信支付开发2、微信支付前端整合三、订单支付后处理一、微信支付介绍 1、微信扫码支付申请 微信扫码支付是商户系统按微信支付协议生成支付二维码&#xff0c;用户再用微信“扫一扫”完成支付的模式。…

若依框架整合JSP

今天接到组长任务要求SpringbootJSP完成页面渲染&#xff0c;因为是用的若依框架&#xff0c;一上午零零散散的找了很多资料和视频&#xff0c;没有达到理想的结果&#xff0c;在下午中午弄出来了&#xff0c;于是整理出来供大家查看引用。&#xff08;单纯Springboot项目怎么建…

webRTC学习-基础知识

webRTC学习1、webRTC简介1.1什么是webRTC&#xff1f;1.2、作用2、webRTC通信原理2.1、媒体协商&#xff08;SDP&#xff09;2.2、网络协商&#xff08;candidate&#xff09;2.2.1、STUN2.2.2、TURN2.3、媒体协商网络协商数据的交换通道webRTC官网1、webRTC简介 1.1什么是web…

wiblogic托管服务器 节点管理 日志文件

创建和配置托管服务器 配置托管服务器 启动托管服务器 startManagedWebLogic.cmd server1 http://localhost:7001 startManagedWebLogic.cmd server3 http://localhost:7001 配置和使用节点管理器 创建 计算机 配置机器 启动节点管理器 startNodeManager.cmd 验…