Python常用模块

math模块

Python官方提供的 math 模块进行数学运算,如指数、对数、平方根和三角函数等运算。math 模块中的函数只是整数和浮点,不包括复数,复数计算需要使用 cmath模块。在使用 math 模块前要先导入 math 模块。

舍入函数

函数名说明
math.ceil(a)返回大于或等于 a 的最小整数
math.floor(a)返回小于或等于 a 的最大整数
round(a)对 a 进行四舍五入运算

示例代码如下

import math
a = 1.6
b = 1.4
a1 = math.ceil(a)
a2 = math.floor(a)
a3 = round(a)
b1 = round(b)
print(a1,a2,a3,b1)

代码运行结果

2 1 2 1Process finished with exit code 0

 幂和对数函数

示例代码如下

import math
a1 = math.log(16,2) # 以 2为底的 16 的对数
a2 = math.sqrt(16)
a3 = math.pow(2,4)
a4 = math.log(100) # 以自然数对数为底的 100 的对数
print(a1,a2,a3,a4)

代码运行结果

4.0 4.0 16.0 4.605170185988092Process finished with exit code 0

三角函数

函数名说明
math.sin(a)返回弧度 a 的三角正弦
math.cos(a)返回弧度 a 的三角余弦
math.tan(a)返回弧度 a 的三角正切
math.asin(a)返回弧度 a 的反正弦
math.acos(a)返回弧度 a 的反余弦
math.atan(a)

返回弧度 a 的反正切

math.degrees(a)将弧度 a 转为角度
math.radians(a)将角度 a 转为弧度
math.isclose(a,b)比较两个浮点数是否足够接近(检查两个数是否在一定的容忍度内相等)

示例代码如下

import math
a1 = math.degrees(math.pi) # 将π转为角度
print(a1)
a2 = math.radians(180/math.pi)
print(a2)
a3 = math.sin(math.pi)
a4 = math.cos(math.pi)
a5 = math.tan(math.pi)
print(a3,a4,a5)
'''
输出结果为1.2246467991473532e-16 -1.0 -1.2246467991473532e-16
当在代码中使用 math.sin(math.pi) 和 math.tan(math.pi) 时
由于浮点数的精度限制,结果可能会有非常小的非零值
这是因为在计算机中,π 的表示可能不会精确到无限小数点后的所有位数
导致计算结果出现轻微的误差。
在 Python 中,math.pi 提供的是 π 的一个近似值
当它被用于 math.sin 和 math.tan 函数时
由于浮点数的这种不精确性,结果可能会有非常微小的非零值
这就是为什么 a3 和 a5 的输出不是精确的 0,而是接近 0 的一个非常小的数
要解决这个问题,可以使用 Python 的 math.isclose 函数来比较两个浮点数是否足够接近
'''
print(math.isclose(a3, 0))  # True
print(math.isclose(a5, 0))  # Truea6 = math.asin(1)
a7 = math.acos(-1)
a8 = math.atan(math.pi/4)
print(a6,a7,a8)

代码运行结果

180.0
1.0
1.2246467991473532e-16 -1.0 -1.2246467991473532e-16
False
False
1.5707963267948966 3.141592653589793 0.6657737500283538Process finished with exit code 0

random模块

random模块提供了一些生成随机数的函数

函数名说明
random.random()返回在范围大于或等于0.0,且小于1.0内的随机数
random.randrange(stop)返回在范围大于或等于0,且小于 stop 内,步长为1的随机整数
random.randrange(start,stop[,step])返回在范围内大于或等于 start ,且小于 stop 内,步长为 step 的随机整数
random.randint(a,b)返回在范围内大于或等于 a,且小于或等于 b 之间的随机整数

示例代码如下

import randoma1 = random.random()
print(a1)
a2 = random.randrange(10)
print(a2)
a3 = random.randrange(5,25,5)
print(a3)
a4 = random.randint(5,10)
print(a4)

代码运行结果

0.00197103160217893
9
5
7Process finished with exit code 0

datetime模块

Python官方提供的日期和时间模块主要有 time 和 datetime 模块。time 偏重于底层平台,模块中大多数函数会调用本地平台上的C链接库,因此有些函数运行的结果,在不同的平台上会有所不同。datetime模块对 time 模块进行了封装,提供了高级API。

datetime模块中提供了以下几个类:

datetime:包含日期和时间

date:只包含日期

time:只包含时间

timedelta:计算时间跨度

tzinfo:时区信息

datetime、date和time类

(1)datetime类

一个datetime对象可以表示日期和时间等信息,创建datetime对象可以用如下构造方法:

datetime.datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0,tzinfo=None)# 其中year、month、day三个参数不能省略;tzinfo是时区参数,默认值是None表示不指定时区

除了 tzinfo 外,其他的参数全为合理范围内的整数。这些参数的取值范围如下表所示,一旦超过该范围就会抛出 ValueError。

参数取值范围说明
yeardatetime.MINYEAR<=year<=datetime.MAXYEARdatetime.MINYEAR常量是最小年,datetime.MAXYEAR常量是最大年
month1<=month<=12
day1<=day<=给定年份和月份时,改月的最大正整数此处需要注意闰年二月是比较特殊的,有29天
hour0<=hour<=24
minute0<=minute=60
second0<=second<=60
microsecond0<=microsecond<1000000

除了通过构造方法创建并初始化 datetime 对象,还可以通过 datetime 类提供的一些类方法获得 datetime 对象

类方法说明
datetime.today()返回当前本地日期和时间
datetime.now(tz=None)返回指定时区的本地当前日期和时间,如果参数tz为None或未指定,则等同于today()
datetime.utcnow()返回当前UTC日期和时间
datetime.fromtimestamp(timestamp,tz=None)返回与UNIX时间戳对应的本地日期和时间(已经被弃用,因为 Python 计划在未来的版本中移除它)
datetime.utcfromtimestamp(timestamp)返回与UNIX时间戳对应的UTC日期和时间(已经被弃用,因为 Python 计划在未来的版本中移除它)

示例代码如下

import datetimea = datetime.datetime(2024,6,26)
print(a)
a1 = datetime.datetime.today()
print(a1)
a2 = datetime.datetime.now()
print(a2)
a3 = datetime.datetime.utcnow()
print(a3)
a4 = datetime.datetime.fromtimestamp(999999)
a5 = datetime.datetime.utcfromtimestamp(999999)
print(a4,a5)

代码运行结果

2024-06-26 00:00:00
2024-06-26 19:20:46.141310
2024-06-26 19:20:46.141310
2024-06-26 11:20:46.141310
1970-01-12 21:46:39 1970-01-12 13:46:39
D:\creation\PythonStudy\Pythonproject\mypro01\mypy01.py:9: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).a3 = datetime.datetime.utcnow()
D:\creation\PythonStudy\Pythonproject\mypro01\mypy01.py:12: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).a5 = datetime.datetime.utcfromtimestamp(999999)Process finished with exit code 0

 注意:

  1. 在Python语言中时间戳单位是“秒”,所以会有小数部分。而其他语言如Java单位是“毫秒”,当跨平台计算时间时需要注意这个差别。
  2. UTC即协调世界时间,它以原子时为基础,是时刻上尽量接近世界时的一种时间计量系统。UTC比GMT更加精确(GMT即格林尼治标准时间,是19世纪中叶大英帝国的标准时间,也是世界基准时间)。
  3. UNIX时间戳自UTC时间1970年1月1日00:00:00以来至现在的总秒数。

(2)date类

一个 date 对象可以表示日期等信息,创建 date 对象可以使用如下构造方法:

datetime.date(year,month,day)# 其中year、month和day三个参数不能省略

在使用时需要导入 datetime 模块,除了使用构造方法创建并初始化 date 对象外,也可以通过 date 类提供的一些类方法获得 date 对象

类方法说明
date.today()返回当前本地日期
date.fromtimestamp(timestamp)返回与UNIX时间戳对应的本地日期

示例代码如下

import datetimea = datetime.date(2024,6,26)
print(a)
a1 = datetime.date.today()
print(a1)
a2 = datetime.date.fromtimestamp(999999999.999)
print(a2)

代码运行结果

2024-06-26
2024-06-26
2001-09-09

(3)time类

 一个 time 对象可以表示一天中时间信息创建 time 对象可以使用如下构造方法

datetime.date(hour=0,minute=0,second=0,microsecond=0,tzinfo=None)

示例代码如下

import datetimea = datetime.time(19,40)
print(a)

代码运行结果

19:40:00Process finished with exit code 0

日期时间计算

 timedelta 对象用于计算 datetime、date 和 time 对象时间间隔。timedelta 类构造方法如下:

datetime.timedelta(days=0,seconds=0,microsecond=0,milliseconds=0,mintes=0,hours=0,weeks=0)

所有参数都素可选的,参数可以是整数或浮点数、正数或负数。在 timedelta 内部只保存 days (天)、seconds(秒) 和 microseconds(微秒)变量,因此其他参数都应换算为这三个参数。

示例代码如下

import datetime
d = datetime.date.today() # 获得本地时间
print(d)
delta = datetime.timedelta(10) # 创建10天的timedelta对象
d += delta
print(d)
d1 = datetime.date(2024,6,26) # 创建2024年6月26日对象
print(d1)
delta1 = datetime.timedelta(weeks=6) # 创建5周的timedelta对象
d1 -= delta1
print(d1)

代码运行结果

2024-06-26
2024-07-06
2024-06-26
2024-05-15Process finished with exit code 0

日期时间格式化和解析

无论是日期还是时间,当显示在界面上时,都需要进行格式化输出,使它能够符合当地人查看日期和时间的习惯。与日期时间格式化输出相反的操作为日期时间的解析,当用户使用应用程序界面输入日期时,计算机能够读入的是字符串,经过解析这些字符串获得日期时间对象。Python中日期时间格式化使用 strftime()方法,date、datetime 和 time 三个类中都有一个实例方法 strftime(format);而日期时间解析使用datetime.striptime(date_string,format)类方法,date 和 time 没有striptime()方法。方法 strftime()和strptime()中都有一个格式化参数 format,用来控制日期时间的格式。

常用的日期和时间格式控制符
指令含义示例
%m两位月份表示01
%y两位年份表示24
%Y四位年份表示2024
%d两位表示月内中的一天26
%H两位小时表示(24小时制)20
%I两位小时表示(12小时制)01
%pAM或PM区域性设置AM、PM
%M两位分钟表示01
%S两位秒表示01
%f以6为数表示微秒000000
%z+HHMM或-HHMM形式的UTC偏移+0000
%Z时区名称UTC、EST、CST,如果没有设置时区为空

示例代码如下

import datetimed = datetime.datetime.today()
d.strftime('%Y-%m-%d %H:%M:%S')
print(d)str_date = '2024-06-26 20:26:30'
date = datetime.datetime.strptime(str_date,'%Y-%m-%d %H:%M:%S')
print(date)

代码运行结果

2024-06-26 20:28:02.663327
2024-06-26 20:26:30

时区

 datetime 和 time 对象只是单纯地表示本地的日期和时间,没有时区信息。如果想带有时区信息,可以使用 timezone 类,它是 tzinfo 的子类,提供了UTC偏移时区的实现。timezone 类构造方法如下:

datetime.timezone(offset,name=None)

其中 offset 是UTC偏移量,+8是东八区,北京在此时区;-5是西五区,纽约在此时区;0是零时区,伦敦在此时区。name是时区名字。

示例代码如下

from datetime import datetime,timezone,timedeltautc_dt = datetime(2024,6,26,12,59,59,tzinfo=timezone.utc)
print(utc_dt)
a1 = utc_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
print(a1)
a2 = utc_dt.strftime('%Y-%m-%d %H:%M:%S %z')
print(a2)bj_tz = timezone(offset=timedelta(hours=8),name='Asia/Beijing')
print(bj_tz)
bj_dt = utc_dt.astimezone(bj_tz)
print(bj_dt)

代码运行结果

2024-06-26 12:59:59+00:00
2024-06-26 12:59:59 UTC
2024-06-26 12:59:59 +0000
Asia/Beijing
2024-06-26 20:59:59+08:00

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

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

相关文章

Qt 智能指针类详解

在Qt框架中&#xff0c;提供了多种智能指针类&#xff0c;用于管理对象的生命周期和内存。常见的包括QPointer、QSharedPointer、QWeakPointer和QScopedPointer。它们各自有不同的用途和行为特点。本文将详细介绍这些类的区别和使用场景。 QPointer QPointer是一个模板类&…

链式队列算法库构建

学习贺利坚老师课程,构建链式队列算法库 数据结构之自建算法库——链队&#xff08;链式队列&#xff09;_数据结构函数链队列的算法框架有哪些-CSDN博客文章浏览阅读6.2k次&#xff0c;点赞3次&#xff0c;收藏9次。本文针对数据结构基础系列网络课程(3)&#xff1a;栈和队列…

低碳短视频:成都柏煜文化传媒有限公司

低碳短视频&#xff1a;绿色传播的新风尚 随着全球气候变化和环境问题日益严峻&#xff0c;低碳生活已经成为人们追求的新风尚。在这个背景下&#xff0c;低碳短视频应运而生&#xff0c;以其独特的方式传播绿色理念&#xff0c;推动低碳生活方式的普及。成都柏煜文化传媒有限…

RedisConnectionException: Unable to connect to 127.0.0.1:6379

idea报错无法连接到redis org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.…

printf趣味代码,打印图案

文章目录 1.打印佛祖2.打印猫猫 (闪烁效果) 1.打印佛祖 #include <stdio.h>void budda_bless(){printf("///\n\ // _ooOoo_ //\n\ // o8888888o //\n\ // …

文件I/O基础-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

文件I/O基础 本章将介绍Linux应用编程中最基础的知识&#xff0c;即文件I/O&#xff08;Input/Output&#xff09;。文件I/O指的是对文件进行读写操作&#xff0c;在Linux系统中一切皆文件&#xff0c;这是Linux系统设计的核心理念&#xff0c;因此文件I/O操作既是基础又是最重…

【软件下载】Folx详细安装教程视频-Folx软件最新版下载

根据大数据调查表明Acceleration PRO下载&#xff1a;抽出多达10个流的故障能够显着提高下载速度。根据行业数据显示与iTunes PRO集成&#xff1a;通过将Folx集成到iTunes来下载歌曲和视频&#xff0c;能够在下载后立即自动添加到iTunes库。实际上我们可以这样讲通过代理下载&a…

udp udpClient 聊天室

简介 1、UDP&#xff08;User Data Protocol&#xff0c;用户数据报协议&#xff09; &#xff08;1&#xff09; UDP是一个非连接的协议&#xff0c;传输数据之前源端和终端不建立连接&#xff0c;当它想传送时就简单地去抓取来自应用程序的数据&#xff0c;并尽可能快地把它…

Vue38 安装脚手架 vue-cli ,并使用脚手架创建项目

安装脚手架 vue-cli &#xff0c;并使用脚手架创建项目 第一步 安装脚手架 npm config set registry https:\\[registry.npmmirror.com // 切换淘宝镜像 npm install -g vue/cli第二步 切换到创建项目的目录&#xff0c;创建项目 cd XXX vue create XXX第三步 启动项目 npm…

化茧成蝶 | 继HuggingFace首家落地大模型具身智能场景

关于具身智能的起源 近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;的兴起给机器人领域带来了革命性的改变&#xff0c;大模型赋予了传统机器人理解和推理的能力&#xff0c;让具身智能这一概念再度出现在大众的视角中。OpenCSG 作为国内 AI 开源社区的先锋&#…

[AI MoneyPrinterTurbo] 一键成片,超级印钞机

今天&#xff0c;我们将踏上一段关于MoneyPrinterTurbo的探索之旅&#xff0c;这是一个文生视频工具&#xff0c;旨在让视频创作变得轻松而有趣。 故事的开始 想象一下&#xff0c;你只需要提供一个视频主题或关键词&#xff0c;剩下的——视频文案、素材、字幕、背景音乐&am…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)

环境&#xff1a;OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接&#xff1a;【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法&#xff0c;是一种基于颜色空间分布(彩色图像的像素值)的图像分割…

pycharm鼠标变成小方块

异常图片&#xff1a; 异常原因&#xff1a;误动了键盘insert键 解决方法&#xff1a;Fninsert

根据配置生成一个合并单元格的table表格的html代码

​分享最近工作中遇到的一个场景&#xff1a;导出表格&#xff0c;需要准备好表格的html代码&#xff0c;此表格支持最上面的表头合并且居中展示表格标题&#xff0c;如果上下行数据有相同的&#xff0c;则要上下合并单元格 封装了一个如下的方法 const configToTable (conf…

openai类模型的超参数含义

model&#xff1a; 模型名 frequency_penalty&#xff1a; Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model’s likelihood to repeat the same line verbatim. 该参数的值范围…

国家自然科学基金标书大全(2002-2024)

数据来源&#xff1a;在20世纪80年代初&#xff0c;为了促进中国的科技体制革新并改革科研资金分配机制&#xff0c;中国科学院的89位院士联名向党和国家领导人提出建议&#xff0c;设立了国家自然科学基金的设立。国自然基金自创立以来&#xff0c;根据国家发展科学技术方针、…

Vue配置项data

data 目录 data 目录类型介绍关键原理编译过程 Vue2Vue3 &#x1f4cc;Vue.js 中的 data&#xff08;Obj/Function&#xff09;属性是 Vue 实例的一个配置选项 类型介绍 对象式 对于根实例或者非复用组件&#xff0c;通常直接提供一个对象字面量作为 data 的值。在对象式中…

Follow Carl To Grow|【LeetCode】491.递增子序列,46.全排列,47.全排列 II

【LeetCode】491.递增子序列 题意&#xff1a;给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以…

dataguard 主备切换方式switchover 和 failover 操作步骤

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。datagu…

SpringBoot整合拦截器和日期转换器

一、SpringBoot整合拦截器 1.添加拦截器 package com.by.interceptor;import com.by.pojo.User; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import java…