2.6 常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-02
| 27页
| 198人阅读
| 21人下载
普通

内容正文:

第2章 Python语言基础 2.1 基本数据类型 2.2 变量 2.3 运算符与表达式 2.4 输入与输出 2.5 内置函数 2.6 常用模块 2.6 常用模块 模块(Module) :将函数按功能划分在一起,存放在一个.py文件中,一个.py文件既是一个模块。 用户可以使用标准库中的模块(如math, random),也可使用第三方模块(numpy, pandas)。用户还可自行编写模块(即Python源文件) 。 pip list # 列出已安装的第三方模块,但不含内置模块 Python标准库也称为内置库或内置模块,是Python自带的开发包,它会随Python解释器一起安装在系统中。 模块使用前要先导入,下面介绍模块导入语法 import。 2.6 常用模块 2.6.1 模块导入 编程时如需使用某个模块,首先要使用 import 语句将该模块导入。导入有如下几种方式: (1)常规导入 常规导入就是将整个模块直接导入,模块的所有变量、对象和函数在编程时都可以使用。 导入格式为: import 模块名 , 使用格式为:模块名.函数名 例:导入math数学模块 import math # 导入整个math模块 math.pi # 调用math模块中的pi常量 Out: 3.141592653589793 math.sin(math.pi / 2) # 调用math模块中的pi常量和sin()函数 Out: 1.0 2.6 常用模块 (2)使用别名 在导入模块时,给模块取别名,程序调用时用简短的别名代替模块名,格式为: import 模块名 as 别名 import math as m # 导入math模块时,并取别名为m m.pi # 调用m模块中的pi常量 Out: 3.141592653589793 m.sin(m.pi / 2) # 调用m中的pi常量和sin()函数 Out: 1.0 import numpy as np # 后续章节导入模块时都用了别名 import pandas as pd import turtle as t 2.6 常用模块 (3)部分导入 不导入整个模块,只导入需要使用的变量、对象或函数。格式为: from 模块名 import 变量名或函数名 as 别名 使用格式: 函数名 # 前面不用再写模块名 from math import pi, sin, factorial as fac pi # 调用时直接写常量名pi Out: 3.141592653589793 sin(pi / 2) # 调用时直接写常量名pi和sin()函数名 Out: 1.0 fac(5) # 阶乘函数 Out: 120 2.6 常用模块 (4)全部直接导入 前面介绍了直接导入模块中的部分成员。如果要将全部成员都直接导入,格式为:  from 模块名 import * * 表示模块内的所有成员 from math import * # 将math模块的所有成员都直接导入 pi # 调用时直接写常量名pi sin(pi / 2) # 调用时直接写常量名pi和sin()函数名 但一般不推荐这种方式,因为如果导入了多个模块,调用函数时就不清楚是来自哪个模块了。建议用第1, 2种方式。 2.6 常用模块 2.6.2 math数学模块 math模块是Python内置的数学函数库,提供了4个数学常量和众多数学函数。使用前先导入: import math dir(math) # 显示math内的函数清单 help(math) # 显示每个函数的简单语法格式 math.e # 自然常数 math.pi # 圆周率 参考 https://www.cnblogs.com/renpingsheng/p/7171950.html 2.6 常用模块 表2.23 math模块中部分常量和函数 函数名 功能 math.e 自然常数e math.pi 圆周率pi math.acos(x)  返回x的反三角余弦值 math.asin(x)  返回x的反三角正弦值 math.atan(x)  返回x的反三角正切值 math.ceil(x)  返回不小于x的整数 math.cos(x)  返回x(弧度)的三角余弦值 math.copysign(x, y)  若y<0,返回-1乘以x的绝对值; 否则,返回x的绝对值 math.degrees(x)  弧度转度 math.exp(x)  返回e的x次方 math.fabs(x)  返回x的绝对值 math.factorial(x)  返回x的阶乘 math.fmod(x, y)  返回x%y(取余) math.floor(x)  返回不大于x的整数 math.fsum([x, y, ...])  返回无损精度的和 math.isinf(x)  若x为无穷大,返回True;否则,返回False math.isnan(x)  若x不是数字,返回True;否则,返回False math.log(x[, base])  返回x的以base为底的对数,base默认为e math.log10(x)  返回x的以10为底的对数 math.modf(x)  返回x的小数和整数 math.pow(x, y)  返回x的y次方 math.radians(x)  度转弧度 math.sin(x)  返回x(弧度)的三角正弦值 math.sqrt(x)  返回x的平方根 math.tan(x)  返回x(弧度)的三角正切值 math.trunc(x)  返回x的整数部分 2.6 常用模块 【例】math模块的常量和函数的应用 import math  math.floor(3.14) # 返回<=3.14的最大整数 Out: 3  math.ceil(3.14) # 返回>=3.14的最小整数 Out: 4 math.radians(45) # 角度转弧度 Out: 0.7853981633974483 math.degrees(math.pi) # 弧度转角度 Out: 180.0 math.exp(2) # e 的2次方 Out: 7.38905609893065  math.sqrt(4) # 开平方 Out: 2.0    2.6 常用模块 【例】math模块的常量和函数的应用 math.factorial(5) # 阶乘函数 Out: 120  math.sin(math.pi / 2) Out: 1.0 math.sin(45/180*math.pi ) # sin需要弧度参数,手工角度转弧度 math.sin(math.radians(45)) # 或用radians将角度转弧度 Out: 0.7071067811865476 注意, math不能处理复数。复数需要使用 cmath 模块 import cmath cmath.sqrt(-1) # -1开根号为复数 Out: 1j 2.6 常用模块 2.6.3 random随机数模块 random模块提供了多个随机数函数,生成的都是伪随机数,由随机种子值控制,按一定算法依次生成。 import random as ran ran.seed(1) # 如不设固定种子值,则按当前时间取随机种子值 print(ran.randint(0,10)) # 2 print(ran.randint(0,10)) # 9 ran.seed(1) print(ran.randint(0,10)) # 2 print(ran.randint(0,10)) # 9 此段代码由于设置了种子1,所以总是返回2, 9的随机整数,确保随机实验的结果可重现。 2.6 常用模块 表2.24 random模块中常用随机数函数 函数名 功能 choice(seq) 从seq(列表/元组/字符串等)中随机选取一个元素 choices(seq, k=num) 从seq中随机选取num个元素(有放回采样) randrange([start,] stop [,step]) 返回一个在[start, stop)范围内以step为步长的递增整数序列中的随机项 random() 返回一个在[0, 1)内的随机浮点数 seed() 设置随机数种子为n,无返回值 shuffle(seq) 将序列seq中的元素顺序打乱,无返回值 randint(min, max) 返回一个[min, max]范围内的随机整数(可含max) uniform(min, max) 返回一个[min, max)范围内的随机浮点数 sample(seq, num) 从seq中随机选取num个元素(无放回采样) 2.6 常用模块 【例】常用随机数函数的应用 import random  random.random() # 前面是模块名,后面是函数名 Out: 0.9551421885236997  random.uniform(1, 10) # 获得[1,10)内的随机浮点数 Out: 9.09577665686459  random.randint(1, 10) # 获得[1,10]内的随机整数 Out: 3  random.choice((1, 2, 3, 4, 5)) # 在(1, 2, 3, 4, 5)中随机选择一个数 Out: 4  random.choices((1, 2, 3, 4, 5), k=3) # 在(1, 2, 3, 4, 5)中随机选择3个数 Out: [3,2,5]  random.sample((1, 2, 3, 4, 5), 2) # 在(1, 2, 3, 4, 5)中随机选择两个数 Out: [4, 2] lst = list(range(1,55)) # 生成1,2,... 54 的顺序列表 random.shuffle(lst) # 将lst随机乱序   2.6 常用模块 2.6.4 datetime和time模块 Python的datetime模块和time模块提供了处理日期和时间的函数。此为内置模块,不需要再pip安装。time模块提供了各种关于时间操作的函数,datetime模块基于time模块进行了封装,提供了更多的对象。一般多使用datetime模块。 1. time模块 time 模块主要包含各种提供日期、时间功能的类和函数。该模块既提供了把日期、时间格式化为字符串的功能,也提供了将字符串转换为日期、时间的功能。 2.6 常用模块  time模块中表示时间的格式主要有两种: (1)时间戳 时间戳表示从1970年1月1号 00:00:00开始到现在按秒计算的总秒数,是一个浮点数。这种表示方式广泛应用在Unix和Linux系统中。 import time start = time.time() # start是时间戳,浮点数 Out:1717814352.7197723 # 小数部分是不足1秒的微秒部分 可用上面的方法测试程序的耗时,例如: import time t1 = time.time() # 用sleep函数模拟程序耗时 time.sleep(3) # 休眠3秒 t2 = time.time() print('程序共耗时:', t2 - t1) 2.6 常用模块  time模块中表示时间的格式主要有两种: (2)时间元组 time 模块提供了一个 time.struct_time 类,该类包含 9 个属性,表示:年、月、日、时、分、秒、星期几(0-6)、一年的第几天和夏令时标记。 tmtup = time.localtime() # 返回当前时间对应的struct_time 变量 Out:time.struct_time(tm_year=2023, tm_mon=11, tm_mday=8, tm_hour=12, tm_min=14, tm_sec=29, tm_wday=2, tm_yday=312, tm_isdst=0) tmtup.tm_mon, tmtup.tm_hour # 月份,小时 time.mktime(tmtup) # mktime将时间元组转为时间戳 time.localtime(0) # 时间戳0转为struct_time类, 1970.1.1 日8:00(东八区) 2.6 常用模块 (3)格式化时间 格式化时间是将时间转换为字符串,例如“2024年2月3日”。 格式 含义 %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 %S 秒(01 - 61) %w 一个星期中的第几天(0 - 6,0是星期天) %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) 2.6 常用模块 时间字符串示例如下: t = time.localtime() # 取得当前日期和时间 # strftime将时间变量t转换为字符串 time.strftime('%Y-%m-%d %H:%M:%S', t) # t 转为字符串 Out: '2023-11-08 12:18:32' time.strftime('%x %X %B %A', t) # 本地日期 时间 月份 星期 Out: '11/08/23 12:18:32 November Wednesday' # strptime将字符串转换为时间 x = time.strptime('2023-05-01', '%Y-%m-%d') Out: time.struct_time(tm_year=2023, tm_mon=5, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=121, tm_isdst=-1) 2.6 常用模块 2. datetime模块 datatime模块重新封装了time模块,它以类的方式提供了多种日期和时间的表达方式,提供的类有:datetime.date、datetime.time、datetime.datetime、datetime.timedelta和datetime.tzinfo。 例:创建datetime.datetime对象 import datetime # 创建一个指定年、月、日的对象 datetime.datetime(2023, 5, 1) Out: datetime.datetime(2023, 5, 1, 0, 0) # 年、月、日,0时0分 datetime.time(10, 5, 30) Out: datetime.time(10, 5, 30) # time类只含时分秒 参考:https://www.cnblogs.com/awakenedy/articles/9182036.html 2.6 常用模块 # 创建一个指定年、月、日、时、分、秒的对象 t = datetime.datetime(2023, 5, 1, 14, 32, 45) Out: datetime.datetime(2023, 5, 1, 14, 32, 45) d = t.timestamp() # 将前面创建的 t对象转为时间戳d Out: 1682922765.0 # 利用时间戳d创建datetime对象 datetime.datetime.fromtimestamp(d) Out: datetime.datetime(2023, 5, 1, 14, 32, 45) # 时间戳 1 对应下面的时间 datetime.datetime.fromtimestamp(1) # 1970-1-1 8:0:1 2.6 常用模块 (2)datetime.datetime类的方法和属性 from datetime import datetime 方法名/属性名 描述 datetime.max 最大时间 datetime.min 最小时间 datetime.today() 返回当前本地时间 datetime.now() 返回当前本地时间 datetime.utcnow() 返回当前UTC时间 datetime.combine(date,time) 把指定的date和time对象整合为datetime对象 datetime.strptime(date_string,format) 将字符串转换为datetime对象 datetime.strftime(dt,format) 将datetime对象转为字符串 2.6 常用模块 from datetime import datetime datetime.max # 获得最大时间 Out: datetime.datetime(9999, 12, 31, 23, 59, 59, 999999) datetime.today() # 获得当前本地时间 Out: datetime.datetime(2023, 11, 8, 12, 24, 31, 770145) datetime.utcnow() # 获得当前UTC(格林尼治标准)时间 Out: datetime.datetime(2023, 11, 8, 4, 24, 52, 28797) # 字符串转换为日期对象 dt = datetime.strptime('2023-3-5', '%Y-%m-%d') dt Out: datetime.datetime(2023, 3, 5, 0, 0) datetime.strftime(dt, '%m-%d') # 日期转换为字符串 Out: '03-05' dt.strftime('%Y-%m-%d') # 日期转换为字符串 Out: '2023-03-05' 【例】datetime.datetime类的常用函数与属性的应用。 2.6 常用模块 (3)datetime.datetime类的对象的常用方法与属性 dt = datetime.datetime.now () 方法名/属性名 描述 dt.year 年 dt.month 月 dt.day 日 dt.hour 时 dt.minute 分 dt.second 秒 dt.microsecond 微秒 dt.tzinfo 时区信息 dt.date() 获取dt的date对象 dt.time() 获取dt的time对象 dt.replace() 指定参数替代(年,月,日,时,分,秒,微秒,时区),生成并返回新对象 dt.timestamp() 返回dt对象对应的时间戳 dt.weekday() 返回数字0至6,分别对应星期一至星期日 dt.isoformat() 返回格式如'YYYY-MM-DD HH:MM:SS'的字符串 dt.strftime(format) 返回指定格式的时间字符串 2.6 常用模块 【例】datetime.datetime类的对象常用方法与属性 dt = datetime.datetime(2023, 5, 1, 14, 32, 45) dt.year # 获得年份, 属性,不需括号 Out: 2023 dt.month # 月份 Out: 5 dt.day # 日 Out: 1 dt.hour # 小时 Out: 14 dt.minute # 分钟 Out: 32 dt.second # 秒 Out: 45 2.6 常用模块 【例】datetime.datetime类的对象常用方法与属性 dt.date() # 获得日期,此为方法需括号 Out: datetime.date(2023, 5, 1) dt.time() Out: datetime.time(14, 32, 45) # 时间 dt.timestamp() # 时间戳 Out: 1682922765.0 dt.weekday() #星期几: 0(星期一) - 6 (星期日) Out: 0 dt.isoweekday() # ISO星期几: 1(星期一) - 7 (星期日) Out: 1 dt.isoformat() # 按iso格式输出日期和时间 Out: '2023-05-01T14:32:45' dt.strftime("%a") # 输出本地简化星期名称 Out: 'Mon' 程序练习 1. 输出0,1,2,...30 度角的sin值,保留4位小数。 import math for x in range(31): s = math.sin(x/180*math.pi) print(f'sin({x:2d})={s:6.4f}') 程序练习 2. 输入类似 2024-3-8的日期字符串,输出星期几,并判断该日是当年的第几天。 from datetime import datetime s = input('输入日期(格式 2024-3-8):') d = datetime.strptime(s,'%Y-%m-%d') # 转日期 print(s, '星期', d.isoweekday()) firstday=datetime(d.year,1,1) # 构造当年的第1天 print('{}是当年的第{}天'.format(s, (d-firstday).days+1)) $$

资源预览图

2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
2.6  常用模块(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。