python的内置模块 I

内置模块 I

除了我们自己写的模块之外,Python 中还内置了大量非常实用的模块。其实,我们之前的代码中就已经使用过几个内置模块了,比如 time 模块和 random 模块。

Python 的内置模块非常多,今天我们介绍几个常用的模块。废话少说,我们直接来看代码!

time 模块

# 导入time 模块
import time

# 暂停程序的执行,参数为秒
time.sleep(3)  # 暂停 3 秒再执行后续代码

time.sleep() 它用于暂停程序的执行,参数为秒。它可以用于防止程序执行过快,比如爬取数据时降低爬取速率防止被封等。

import time

# 获取当前时间的 Unix 时间戳
print(time.time())
# 输出:1558329240.201314

Unix 时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在的总秒数。Unix 时间戳只是一个单纯不断增长的数字,所以不会存在时区等问题,全球统一,简单便捷。

拓展:在 32 位的机器上 Unix 时间戳的最大值为 2147483647,即 2038 年 1 月 19 日 03:14:07。届时所有 32 位操作系统的时间将会出错,变成 1901 年 12 月 13 日。而 64 位系统的最大值可达到 2900 亿年后的 292277026596 年 12 月 4 日 15:30:08,我们完全不必为此担忧。

Unix 时间戳对计算机来说稍微计算一下就知道现在是什么时间了,但对人类来说可读性就大打折扣了,所以还有对人类友好的 ctime() 方法:

import time

print(time.ctime())
# 输出:Mon June 04 19:13:00 2024

datetime 模块

datetime 模块包括很多函数和类,这些函数和类均用于日期和时间的解析、格式化以及计算。老师今天只给你介绍其中的几个,更多的内容等你需要时再自行探索。

# 导入 datetime 模块中的 datetime 对象
from datetime import datetime

# 获取当前时间
print(datetime.now())
# 输出:2024-06-04 19:12:00.201314

# 将 Unix 时间戳转换成时间
print(datetime.fromtimestamp(1558329240.201314))
# 输出:2024-06-04 19:13:00.201314

注意,datetime 模块里有一个同名的 datetime 类,因此我们要写成 from datetime import datetime

datetime.now() 和 time.ctime() 类似,都是获取人类可读的时间格式,只是 datetime.now() 没有星期几的信息。

有些时候我们拿到 Unix 时间戳却不知道具体时间,可以使用 datetime.fromtimestamp() 方法来将其转换成人类可读的时间格式。

有些时候我们还要进行日期的计算,比如 5 天前是几月几号,10 天后又是几月几号等。这在 Python 中实现起来也不难,我们来看个例子:

from datetime import datetime, timedelta

print(datetime.now() - timedelta(days=5))
# 输出:2024-06-04 19:14:00.201314

timedelta() 在日期计算中很实用,上面代码中的 timedelta(days=5) 表示 5 天,用现在的时间减去 5 天就能得到 5 天前的日期。同理,如果加上 5 天就能得到 5 天后的日期了。

你应该注意到了,调用 timedelta() 时传的是关键字参数 days=5,表示 5 天。其实除了天之外,timedelta() 还支持传入周、时、分、秒、毫秒和微秒,我们来看看这些参数名都是什么:

from datetime import datetime, timedelta

# 周(weeks)
print(datetime.now() - timedelta(weeks=2))
# 输出:2024-05-21 19:19:18.013844

# 时(hours)
print(datetime.now() + timedelta(hours=2))
# 输出:2024-06-04 21:19:18.013891

# 分(minutes)
print(datetime.now() + timedelta(minutes=2))
# 输出:2024-06-04 19:21:18.013898

# 秒(seconds)
print(datetime.now() + timedelta(seconds=2))
# 输出:2024-06-04 19:19:20.013903

# 毫秒(milliseconds)
print(datetime.now() + timedelta(milliseconds=2))
# 输出:2024-06-04 19:19:18.015907

# 微秒(microseconds)
print(datetime.now() + timedelta(microseconds=2))
# 输出:2024-06-04 19:19:18.013914

如果你英文还不错,这些参数对你来说肯定很简单吧!还有,timedelta() 可以支持同时传入多个参数,比如计算两个半小时前的时间:

from datetime import datetime, timedelta

print(datetime.now() - timedelta(hours=2, minutes=30))
# 输出:2024-06-04 16:50:22.493242

内置模块 II

上一节中介绍了两个关于时间的模块,这一节我们来看看两个关于数字的模块。

random 模块

random 模块之前也有提及,今天我们来正式学习它。从模块名称我们就能猜出它应该和 随机 有关,random 模块本身很简单,我们直接来看几个例子:

# 导入 random 模块
import random

# 随机生成 0-1 之间的浮点数,包括 0,不包括 1
print(random.random())
# 输出:0.878022926133

# 随机生成 0-5 之间的整数,包括 0 和 5
print(random.randint(0, 5))
# 输出:3

# 随机生成 0-5 之间的浮点数,包括 0 和 5
print(random.uniform(0, 5))
# 输出:4.86369987147

# 从非空序列中随机返回一个元素
print(random.choice([1, 2, 3]))
# 输出:2

random.random() 可以生成 0-1 之间的随机小数,包括 0,不包括 1。这是最基本的生成随机数的方法,同时 random 模块还帮我们封装了一些更好用的方法——random.randint()random.uniform() 和 random.choice()

random.randint(m, n) 可以生成一个随机整数,该整数大于等于 m,小于等于 n。random.uniform(m, n) 也是类似的,只不过生成的是随机小数,该小数大于等于 m,小于等于 n。

注意:random.randint() 和 random.uniform() 生成的随机数是包含后面一个数的,这点和 random.random() 还有分片不同。

random.choice() 可以从一个非空序列中随机返回一个元素,常常用于抽奖:

import random

winner = random.choice(['小贝', '闻闻', '黄帮主'])
print('大奖得主是' + winner)
# 输出:大奖得主是黄帮主

需要注意的是,参数一定得是非空序列,否则将会报错:

import random

random.choice([])
# 报错:IndexError: Cannot choose from an empty sequence

math 模块

math 模块从名称也可知是和数学相关的,在做一些数学计算时会用到,这里简单介绍一下:

# 导入 math 模块
import math

# 向上取整
print(math.ceil(2.3))
# 输出:3
print(math.ceil(2.9))
# 输出:3

# 向下取整
print(math.floor(2.3))
# 输出:2
print(math.floor(2.9))
# 输出:2

# 取平方根
print(math.sqrt(4))
# 输出:2.0

# 数学常数 π
print(math.pi)
# 输出:3.14159265359

上面这些方法是比较常用的,同时 math 模块里还有很多其他方法和常数。对数学计算有需要的同学可以查看文档了解更多,文档地址是:math --- 数学函数 — Python 3.12.3 文档。

经过这两关的学习,我们知道了如何利用 模块 的思想,把一个个独立的 .py 文件组织在一起,也了解了 Python 中几个内置模块的用法。一起来复习下吧~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 内存屏障简介

文章目录 1. 前言2. 什么是内存屏障?3. 为什么需要内存屏障?3.1 多发射(Multi-issuing)3.2 乱序执行(Out-of-order execution)3.3 预测执行(Speculative execution)3.4 Load-Store 优化3.5 CPU Cache3.6 编译乱序3.7 小结 4. ARM 内存一致性模型 和 内存…

Julia编程11:变量作用域 Scope of Variables

There are two main types of scopes in Julia, global* scope* and local* scope*. Julia有全局变量作用域和局部变量作用域,函数或者一些结构体、循环体如for等是否内部是局部环境可以参照下表。 ConstructScope typeAllowed withinmodule, baremoduleglobalglo…

商品API数据集成:一站式商品信息服务平台

一站式商品信息服务平台:商品API数据集成 在数字化快速发展的今天,信息的高效获取与整合成为了各行各业追求的核心竞争力。特别是在商品信息领域,如何快速、准确地获取并整合来自多个渠道的商品数据,为企业决策提供支持&#xff0…

【数据结构】图论——AOV和AOE(拓扑排序、存放表达式、关键活动、关键路径)

目录 AOV和AOEAOV 有向无环图及其应用(拓扑结构)有向无环图的应用——存放表达式二叉树存放表达式图存放表达式 AOE 有向无环图及其应用——关键路径1. 事件的最早发生时间事件(顶点)最早发生时间的计算方法: 2. 事件允许的最晚发生时间事件(…

JS百题斩~ typeof 、instanceof 与 Object.prototype.toString 区别(简单易懂)

首先,让我们先了解一下JavaScript的数据类型,分为两类: 基础类型:Undefined,Null,Boolean,Number,BigInt,String,Symbol 引用类型:Object&#xf…

网络简史-基于图论的网络

先看一幅图: 如图,我们对类似 crossbar,banyan tree,b-tree,10-tree,256-tree,甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中,地址信息被编码到拓扑本身&#…

每天复习一点小CTF知识(6.4)

NSSCTF/[FSCTF 2023]夜深人静的时候也会偷偷emo 直接爆破压缩包,先来数字 解压好,一个flag.mp3 mp3隐写,直接干 得一个txt文件直接开

2024最新破解版CorelDRAW解锁设计新境界!

在当今快速变化的市场环境中,品牌之间的竞争愈发激烈。为了在众多品牌中脱颖而出,企业需要不断地提升自身的品牌形象和市场识别度。而在这个过程中,视觉设计起到了至关重要的作用。一款优秀的设计软件不仅能帮助设计师轻松地将创意想法变成现…

【全网唯一】触摸精灵iOS版纯离线本地文字识别插件

目的 触摸精灵iOS是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。但触摸精灵的图色功能比较单一,无法识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要…

《平渊》· 捌 —— 「庄子」山木篇中的 “空船效应”

《平渊》 捌 "若能虚己以游世,其孰能害之?" "方舟而济于河,有虚船来触舟,虽有惼心之人而不怒;有一人子其上,则呼张歙之;一呼而不闻,再呼而不闻,于是三呼邪…

热烈祝贺2024年重庆市建筑电气学术年会圆满成功

芳菲四月花似锦,正是人间好时节,4月26日, 24年重庆市建筑电气学术年会在重庆维景国际大酒店举办。会议主题是“智慧 低碳 绿色 安全 ”。会上业内专家就建筑电气行业的新技术、市场趋势和未来发展展开探讨与深入交流。 本次会议邀请重庆市建筑电气行业主…

vue中实现一个时间选择器的级联框,第一层小时,第二层分钟

最近在做一个考勤系统时&#xff0c;新增班次的时候需要设置打卡时段&#xff0c;类似如下效果&#xff1a; 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等&#xff0c;根据具体需求变动 <template><div&…

【代码+详解】算法题 : 最大公约数

❗❗❗必看: 下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答. ❗❗❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!! 文章目录 题目&…

低代码和零代码软件时代质量管理(QM)和质量管理系统(QMS)

【前言】 质量控制过程的目的是为了确保产品的制造标准得到保持和改进。质量控制过程使公司能够满足客户的期望&#xff0c;同时确保产品质量的一致水平。采用这些标准创造了一种公司文化&#xff0c;鼓励所有员工努力实现高质量的生产标准。低代码和零代码软件可以成为质量控…

6.4学习总结

Codeforces Round 950 (Div. 3)A、B题解 解题思路 开一个数组来记录A,B,C,D,E,F,G难度题目出现的次数&#xff0c;因为每一轮比赛都需要每一种难度都有一题&#xff0c;所以我们只要根据要出的比赛的轮数对每一个难度的题目进行自减&#xff0c;最后遍历数组把所有为负数的题目…

vscode编译文件夹下所有文件的配置(包含插件和 .json 文件)

文章目录 我所使用的插件.json 文件配置1. c_cpp_properties.json2. launch.json3. settings.json4. tasks.json 如何运行 我所使用的插件 红框中的五个插件是必备的&#xff0c;其中 Code Runner 插件可以在写完一个 .c 或 .cpp 文件后&#xff0c;按下 Crtl R 快捷键快速编…

12-学生们参加各科测试的次数(高频 SQL 50 题基础版)

12-学生们参加各科测试的次数 -- 学生表中&#xff0c;id是唯一的&#xff0c;将他作为主表 -- CROSS JOIN产生了一个结果集&#xff0c;该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…

zdppy_api 中间件请求原理详解

单个中间件的逻辑 整体执行流程&#xff1a; 1、客户端发起请求2、中间件拦截请求&#xff0c;在请求开始之前执行业务逻辑3、API服务接收到中间件处理之后的请求&#xff0c;和数据库交互&#xff0c;请求数据4、数据库返回数据5、API处理数据库的数据&#xff0c;然后给客户…

计算机基础(3)——计算机系统组成

&#x1f497;计算机基础系列文章&#x1f497; &#x1f449;&#x1f340;计算机基础&#xff08;1&#xff09;——计算机的发展史&#x1f340;&#x1f449;&#x1f340;计算机基础&#xff08;2&#xff09;——冯诺依曼体系结构&#x1f340;&#x1f449;&#x1f34…

透视亚马逊云科技中国峰会:生成式AI全面提速,加速行业应用落地

导读&#xff1a;亚马逊云科技在中国&#xff0c;生成式AI与行业化战略齐头并进。 “亚马逊云科技致力于成为企业构建和应用生成式AI的首选。” 近日2024亚马逊云科技中国峰会上&#xff0c;亚马逊全球副总裁、亚马逊云科技大中华区总裁储瑞松分享了亚马逊云科技中国业务最新进…