新闻详情

新闻详情

首页 / 资讯中心 / 详情

python-day07-模块

发布时间:2026/10/1 2:41:34来源:尧图网络
python-day07-模块
目录一、什么叫模块二、常用的内置模块2.1.数学计算模块-math2.2.日期时间模块-datetime1datetime类2date类3time类4计算时间跨度-timedelta5字符串时间转换-strftime、strptime2.3.正则表达式模块-re1字符串匹配match(p,text)2字符串查找(search(p,text))3字符串替换(replace(p,text))4字符串分割一、什么叫模块在python中一个模块就是一个脚本文件.py模块是保存代码的最小单位在模块中可以声明变量、函数、属性和类等python代码元素。一个模块可以访问另一个模块这很大一程度了python语言流行的很大因素就是强大的第三方功能模块。那模块间是怎么互相访问的呢需要进行导入访问。访问方式有三种1import 模块名通过这种方式会导入m2模块的所有代码元素在访问时需要加前缀“m2.”2from 模块名 import 代码元素通过这种方式会导入m2中的x变量在访问时不需要加前缀“m2.”3from 模块名 import 代码元素 as “代码元素别名”与2类似如果说第二种方式中导入的代码元素和当前的代码中的元素出现冲突就可以通过另起别名的方式来进行冲突解决。二、常用的内置模块在真正做项目时我们会经常使用别人已经开发好的模块这样就不用从零开始开发项目了还可以加快开发速度。这些模块可能是python官方提供的也可能是第三方开发的。其中python官方提供的模块就称之为“内置模块”。2.1.数学计算模块-math在math模块中包含数学运算相关的函数等。例如常见的指数函数、对数函数、平方根和三角函数等。函数说明ceil(x)返回大于或等于x最小整数floor(x)返回小于或等于x最大整数sqrt(x)返回x的平方值pow(x,y)返回x的y次幂的值math.log(x[,base])返回以base为底的对数若省略底数base则计算x自然对数sin(x)返回弧度x的三角正弦degrees(x)将弧度x转化为角度radians(x)将角度x转化为弧度例如import math x 30.2442 # 1. 向上取整ceil print(f大于或等于 x 的最小整数是{math.ceil(x)}) # 输出 31 # 2. 向下取整floor print(f小于或等于 x 的最大整数是{math.floor(x)}) # 输出 30 修正描述 # 3. 平方 print(fx 的平方值是{x ** 2}) # 或 math.pow(x, 2) # 4. 幂运算4次方 print(fx 的 4 次幂的值是{math.pow(x, 4)}) # 或 x ** 4 # 5. 以10为底的对数 print(f以10为底 x 的对数值是{math.log10(x)}) # 更简洁比 math.log(x,10) 快 # 6. 正弦假设 x 是弧度 print(f弧度 x 的三角正弦值是{math.sin(x)}) # 7. 弧度转角度 print(f将弧度 x 转化为角度值为{math.degrees(x)}) # 8. 角度转弧度注意 x 此时被当作角度 print(f将角度 x 转化为弧度值为{math.radians(x)})2.2.日期时间模块-datetimePython官方提供的日期和时间模块主要是datetime模块。在datetime模块中提供了右侧几个类。datetime:包含时间和日期。date:只包含日期。time:只包含时间。timedelta:计算时间跨度。tzinfo:时区信息。1datetime类datetime类表示日期和时间等信息我们可以使用如下构造方法创建datetime对象这个值超过范围就会导致发生错误例如ValueError: day is out of range for monthdatetime.datetime(year,month,day,hour0,minute0,second0,microsecond0,tzinfoNone)参数说明如下参数说明取值范围year年不可以省略datetime.MINYEAR ≤ year ≤ datetime.MAXYEARmonth月不可以省略1 ≤ month ≤ 12day日不可以省略1 ≤ day ≤ 给定年份和月份这时该月的最大天数hour小时可以省略0 ≤ month 24minute分钟可以省略0 ≤ minute 60second秒可以省略0 ≤ second 60microsecond微秒可以省略0 ≤ microsecond 1000000tzinfo时区无datetime类的常用方法如下datetime.today()返回当前的本地日期和时间。datetime.now(tzNone):返回指定时区的当前日期和时间参数tz用于设置时区如果参数tz为None或省略则等同于today()datetime.fromtimestamp (timestamp, tzNone)返回与UNIX时间戳对应的本地日期和时间。UNIX时间戳是从1970年1月1日00:00:00开始到现在为止的总秒数。例如import datetime d datetime.datetime(2026,8, 30) print(d) d_detail datetime.datetime(2026,8,30,5,23, 34) print(d_detail) print(f现在的时间是{datetime.datetime.today()}) print(f返回指定时区的时间{datetime.datetime.now()})结果2date类date类表示日期信息我们可以使用如下构造方法创建date对象datetime.date(year,month,day)这些参数的含义和取值范围与datetime类一样。date类的常用方法如下date.today()返回当地的本地日期。date.fromtimestamp(timestamp)返回与UNIX时间戳对应的本地日期。例如import datetime date1 datetime.date.today() print(f当前的时间是{date1})结果3time类time类表示一天中的时间信息我们可以使用如下构造方法创建time对象datetime.time(hour0,minut0,second0,microsecond0,tzinfoNone)这里的参数的含义和取值范围与datetime类一样。例如import datetime date1 datetime.time(5,25,2) print(f当前的时间是{date1})4计算时间跨度-timedelta试想一下我们我想知道20天之后是哪一天或则说我们当前想知道2027年1月1日是哪一天应该如何计算时间的相加减不是简单的加减法不能简单的讲当前的时间 /- 来进行计算。因为他俩就不是同一个类型的数据。直接相加减会报错TypeError: unsupported operand type(s) for : datetime.date and intpython内置的时间处理模块里边有一个timedelta类。timedelta类专门用于计算datetime、date和time对象的时间间隔。timedelta类的构造方法如下datetime.timedelta(days0,seconds0,microseconds0,miliseconds0,minutes0,hours0,weeks0)其中的所有参数都可以为整数或浮点数也可以为正数或负数如下表所示参数说明day天second秒microsecond微秒miliseconds毫秒minute分钟hour小时weeks周import datetime date_now datetime.date.today() print(f当前的时间是{date_now}) # 构建10天这个timedelta对象 d datetime.timedelta(10) print(fd的数据类型是{type(d)},10天后的时间是{date_now d}) # 构建2周前的timedelta对象 d2 datetime.timedelta(weeks-2) print(f两周前的时间是{date_now d2})5字符串时间转换-strftime、strptime我们经常会遇到将日期时间与字符串相互转换的情况。1、将日期时间对象转换为字符串时称之为日期时间格式化。在Python中使用strftime()方法进行日期时间的格式化在datetime、date和time三个类中都有一个实例方法strftime(format)。2、将字符串转换为日期时间对象的过程叫作日期时间解析。在Python中使用datetime.strptime (date_string,format)类方法进行日期时间解析。3、在strftime()和strptime()方法中都有一个格式化参数format用来控制日期时间的格式常用的日期和时间格式控制符如下表所示指令含义示例%m两位月份表示01、02、03%y两位年份表示08、18%Y四位年份表示2008、2018%d两位表示月中的一天01、02、03%H两位小时表示24小时制00、01、23%I两位小时表示12小时制01、02、12%pAM或PM区域性设置AM或PM%M两位分钟表示00、01、59%S两位秒表示00、01、59%f以6位数表示微秒000000、000001、.....、999999%zHHMM或-HHMM形式的UTC漂移0000、-0400、1030如果没有设置时区则为空%Z时区名称UTC、EST、CST如果没有设置时区则为空。例如import datetime # 将时间按照格式化进行输出 d datetime.datetime.today() print(f将当前获取到的时间进行格式化{d.strftime(%Y-%m-%d %H:%M:%S)}) print(f将当前获取到的时间格式化为%Y-%m-%d值为{d.strftime(%Y-%m-%d)}) # 将字符串转换为时间 str_date 2026-08-25 10:40:25 print(fstr_date的数据类型是{type(str_date)}) str_to_date datetime.datetime.strptime(str_date, %Y-%m-%d %H:%M:%S) print(f转化为后的str_to_date数据类型是{type(str_to_date)}值为{str_to_date})结果2.3.正则表达式模块-re正则表达式指预先定义好一个“字符串模板”通过这个“字符串模板可以匹配、查找和替换那些匹配“”字符串模板的字符串。他对字符串的操作效率更高、更能更强大。1字符串匹配match(p,text)字符串匹配指验证一个字符串是否符合指定的“字符串模板”常用于用户输入验证。例如用户在注册时要输入邮箱所以需要验证邮箱是否有效这就要用到字符串匹配验证。语法格式match(p,text)match(p,text)函数进行字符串匹配其中的参数p是正则表达式即字符串模板text是要验证的字符串。如果匹配成功则返回一个Match对象匹配对象否则返回None。正则表达式一套用于描述文本规则的“公式”或“筛选条件”。正则表达式中常用的模式匹配模式含义示例.任意字符除换行符a.c匹配abc,a#c,即表示两中间的.即可表示任意字符。*0次或多次重复前一字符ab*匹配a,ab,abb1次或多次重复ab匹配ab,abb?0次或1次重复非贪婪ab?匹配a或ab{n}恰好 n 次重复\d{3}匹配三位数字{n,m}n 到 m 次重复\d{2,4}匹配2~4位数字[abc]字符集匹配 a/b/c 之一[aeiou]匹配元音字母[^abc]否定字符集不匹配 a/b/c[^0-9]匹配非数字\d数字等价于[0-9]\w单词字符字母、数字、下划线\s空白字符空格、制表符、换行等^字符串开头或行开头在 MULTILINE 模式^Hello匹配以 Hello 开头$字符串结尾world$匹配以 world 结尾|或逻辑cat|dog匹配 cat 或 dog\b单词边界\bthe\b匹配独立的单词 the例如p r\d{3}-\d{4}-\d{4}即表示匹配3位-4位-4位所匹配的上的字符串p r\wguizhou\.com即表示匹配的字符串首字符的是单词字符字母、数字、下划线可出现一次或多次后接guizhou字符串后跟“\.”不是把“.”作为普通字符对待最后再拼接com示例1import re text 我的电话号码是 138-1234-5678备用号是 010-8888-9999。 # re.search() —— 查找第一个匹配位置 phone_pattern r\d{3}-\d{4}-\d{4} # 匹配 3位-4位-4位 数字 match re.search(phone_pattern, text) if match: print(找到第一个号码:, match.group()) # 输出: 138-1234-5678 print(起始索引:, match.start()) # 输出: 8 print(结束索引:, match.end()) # 输出: 21 # re.findall() —— 返回所有匹配的字符串列表 all_phones re.findall(phone_pattern, text) print(所有号码:, all_phones) # 输出: [138-1234-5678, 010-8888-9999] # re.match() —— 从字符串开头匹配 result re.match(r我的, text) # 匹配开头 print(bool(result)) # True result re.match(r电话, text) # 开头不是电话 print(bool(result)) # False结果示例2import re # 小写 \w 匹配字母、数字、下划线 p r\wguizhou\.com # 创建测试用例 email1 ZhangSanguizhou.com email2 $!$_12guizhou.com email3 123guizhou.com # 返回匹配结果并将匹配结果返回给变量m1,m2,m3 m1 re.match(p, email1) m2 re.match(p, email2) m3 re.match(p, email3) print(m1,m2,m3) # 输出匹配对象非 None print(type(m1)) # class re.Match print(m1.group()) print(type(m2)) # print(m2.group()) print(type(m3)) print(m3.group())2字符串查找(search(p,text))字符串查找指从一个字符串中查找匹配正则表达式的子字符串常用于数据分析、网络爬虫等数据处理中。查用的字符串查找函数如下search(p,text):在text字符串中查找匹配的内容如果找到则返回第一个匹配的Match对象否则返回None。p是正则表达式。findall(p,text):在text字符串中查找所有匹配的内容如果找到则返回所有匹配的字符串列表如果一个都没有匹配则返回Nonep是正则表达式。例如import re # 小写 \w 匹配字母、数字、下划线 p r\wguizhou\.com # 创建测试用例 email1 ZhangSanguizhou.com email2 $!$_12guizhou.com_13guizhou.com email3 123guizhou.com # 返回匹配结果并将匹配结果返回给变量m1,m2,m3 m1 re.match(p, email1) m2 re.search(p, email2) m3 re.findall(p, email2) print(m1,m2,m3) # 输出匹配对象非 None print(type(m1)) # class re.Match print(m1.group()) print(type(m2)) print(m2.group()) print(type(m3)) for x in m3: print(x)3字符串替换(replace(p,text))正则表达式的字符串替换函数是sub(),该函数替换匹配的字符串返回值是替换之后的字符串其语法格式如下re.sub(pattern,repl,string,count0)其中参数pattern是正则表达式参数repl是用于替换的新字符串参数string是积极那个被替换的旧字符串参数count是要替换的最大数量默认值为零表示不限制替换数量。import re # 小写 \w 匹配字母、数字、下划线 p r\wguizhou\.com # 创建测试用例 email1 ZhangSanguizhou.com email2 123guizhou.com email3 $!$_12guizhou.com_13guizhou.com # 返回匹配结果并将匹配结果返回给变量m1,m2,m3 m1 re.match(p, email1) m2 re.search(p, email2) m3 re.sub(p, hello world!,email3) print(m1,m2) # 输出匹配对象非 None print(type(m1)) # class re.Match print(m1.group()) print(type(m2)) print(m2.group()) print(f最后email3邮箱的地址是{m3})4字符串分割在python中使用re模块中的split()函数进行字符串分割该函数按照匹配的子字符串进行字符串分割返回字符串列表对象其语法格式如下re.split(pattern,string,maxsplit0)其中参数pattern是正则表达式参数string是要分割的字符串参数maxsplit是最大分割次数maxsplit的默认值为零表示分割次数没有限制。import re p r\d text AB12CD34EF clist re.split(p,text) print(clist) clist2 re.split(p,text,maxsplit1) print(clist2) clist3 re.split(p,text,maxsplit2) print(clist3)
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

HBuilderX入门指南:零基础快速搭建HTML网页 2026/10/1 6:20:16

HBuilderX入门指南:零基础快速搭建HTML网页

1. 为什么选HBuilderX?它真不是“前端界的备胎编辑器”刚接触前端开发的朋友,常被VS Code、WebStorm、Sublime Text这些名字绕晕。而HBuilderX,这个由DCloud团队打磨十年以上的国产编辑器,总在新手教程里低调出现,却在…

阅读更多 →
从CPU寄存器理解C++代码执行本质 2026/10/1 6:20:16

从CPU寄存器理解C++代码执行本质

1. 为什么说“从CPU看C”不是一句空话,而是写代码时必须建立的底层直觉你写过int a 5; a 3;,也调试过段错误、野指针、内存泄漏——但有没有哪一刻,你盯着GDB里mov %rax, %rbx这行汇编发过愣:这句到底对应我C里哪一行&#xff1…

阅读更多 →
花生叶片病害检测数据集实战:从标注格式到YOLOv8训练落地 2026/10/1 6:20:16

花生叶片病害检测数据集实战:从标注格式到YOLOv8训练落地

简介:这份花生叶片病害检测数据集面向从事农业图像识别、深度学习目标检测的开发者与研究人员,可用于训练和验证花生叶片病害的检测模型,适合具备一定目标检测基础、需要真实标注数据开展实验或课程项目的读者。资源包共335个文件&#xff0c…

阅读更多 →
从CPU视角理解C++:寄存器、缓存与指令的底层映射 2026/10/1 6:20:15

从CPU视角理解C++:寄存器、缓存与指令的底层映射

1. 项目概述:为什么说“从CPU看C”不是一句空话,而是写代码的底层罗盘 你有没有过这样的时刻:在VSCode里敲完一段C代码,编译运行后结果正确,但心里总像隔着一层雾——明明逻辑没问题,可为什么这段循环跑得…

阅读更多 →
马德拉酒:一杯“煮过”的葡萄酒为何能陈年百年? 2026/10/1 6:20:15

马德拉酒:一杯“煮过”的葡萄酒为何能陈年百年?

1. 马德拉酒是什么:一杯“煮过”的葡萄酒,凭什么能活几百年我第一次认真喝到马德拉酒,是在一瓶被遗忘在书柜角落的Malmsey 10年上。当时抱着怀疑开瓶,结果一口下去愣住了——那不是普通葡萄酒的味道,有坚果、焦糖、陈皮…

阅读更多 →
安全运营自动驾驶:AI告警处理与自动化响应实战指南 2026/10/1 6:20:09

安全运营自动驾驶:AI告警处理与自动化响应实战指南

做安全运营最痛苦的时刻,不是半夜三点被电话叫醒,而是叫醒后发现来电原因是几百条重复告警,真正需要人处理的没几条。这两年跟同行聊,话题总会撞到同一个词:安全运营的“自动驾驶”。不是说车,是说安全运营…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉