内置模块
同内置函数一样,Python 内置了非常多有意义的模块,可以节省我们造轮子的时间,将更多的精力集中在业务编程上。比如说我们需要生成随机数,Python 提供了 random
模块,比如说我们需要生成时间日期,Python 提供了 datetime
模块,下面是一个列表,大致列出了我们常用到的 Python 内置模块,以及他们具体的用途。
模块名 | 说明 |
os | 提供了与操作系统交互的一些函数,例如文件、目录操作等 |
sys | 提供了与 Python 解释器交互的一些函数,例如用于退出程序的 exit() 函数 |
math | 提供了数学函数,例如平方、立方、三角函数、指数函数等 |
random | 提供了生成随机数的函数。 |
time | 提供了一些关于时间操作的函数,比如返回当前时间,使用程序睡眠一定时间等。 |
datetime | 提供了日期和时间处理的函数,比如日期加减、时区转换等 |
re | 提供了正则表达式的支持 |
json | 提供了 JSON 格式的编码和解码功能 |
statistics | 提供了众多统计函数 |
random
random 模块的常用函数:
random()
: 生成一个 [0, 1) 范围内的随机浮点数。randrange()
:生成范围的随机整数,下面的 randint 函数就是基于 randrange 实现的,区别是,randrange 可以只传一个参数,也可以传 2 个参数。randint(a, b)
: 生成一个 [a, b] 范围内的随机整数。choice(seq)
: 从序列 seq 中随机选择一个元素。
import random
# 生成一个 [0, 1) 范围内的随机浮点数
print(random.random())
# 生成0-9之间的随机整数
print(random.randrange(10))
# 生成一个 [1, 10] 范围内的随机整数
print(random.randint(1, 10))
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 从 lst 中随机选择一个元素
print(random.choice(lst))
math
math模块的常用函数:
- ceil(x): 返回不小于 x 的最小整数。
- floor(x): 返回不大于 x 的最大整数。
- fabs(x): 返回 x 的绝对值。
- sqrt(x): 返回 x 的平方根。
import math
# 返回不小于 x 的最小整数
print(math.ceil(3.14)) #4
# 返回不大于 x 的最大整数
print(math.floor(3.14)) #3
# 返回 x 的绝对值
print(math.fabs(-3.14)) #3.14
# 返回 x 的平方根
print(math.sqrt(9)) #3.0
time
time模块的常用函数:
- time():返回当前时间的时间戳(自 1970 年 1 月 1 日以来的秒数)。
- sleep(secs):使程序进入睡眠状态,单位为秒。
import time
now = time.time()
print(now)
print('准备 sleep')
print(time.sleep(5)) # 这一步会让程序阻塞 5s 才继续执行下面的代码
print('sleep 结束')
datetime
datetime 模块中比较侧重时间和日期的运算以及格式化
- now(tz=None):返回当前的本地日期和时间,该函数会返回一个 datetime 对象。
- utcnow():返回当前的 UTC 日期和时间,该函数会返回一个 datetime 对象。
- strftime(format):datetime 对象中的方法,用来将 datetime 对象格式化为指定的字符串格式。
- strptime(date_string, format):将字符串按照指定的格式转换为 datetime 对象。
- fromtimestamp(secs):将字符串按照指定的格式转换为 datetime 对象。
- date():返回 datetime 对象的日期部分。
- time():返回 datetime 对象的时间部分。
- timedelta():表示两个日期或时间之间的差异。
datetime 是 datetime 模块 中的一个类,用于表示日期和时间。datetime 类的实例可以通过 datetime 模块的 datetime()
函数创建,其构造方法如下:
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
示例代码
import time
# 注意 datetime 的导入方式
from datetime import datetime
local_now = datetime.now() # 返回本地时间的 datetime 对象
utc_now = datetime.utcnow()
local_now_str = local_now.strftime('%Y-%m-%d %H:%M:%S')
print(local_now_str) # 2023-05-25 15:52:11
# 将字符串转换成 datetime 对象
local_now_2 = datetime.strptime(local_now_str, '%Y-%m-%d %H:%M:%S')
print(local_now_2) #2023-07-24 17:57:39
timestamp = time.time()
# 将时间戳转换为 datetime 对象
dt = datetime.fromtimestamp(timestamp)
print(dt) #2023-07-24 17:57:39.815000
datetime 时间运算
datetime 对象是可以做减法来计算时间间隔的,两个 datetime
对象相减得到一个 timedelta
对象;datetime 和 timedelta 对象相互加减,可以的得另外一个全新的 datetime 对象。timedelta 是 datetime 库 中的一个类,用于表示时间间隔,可以用来进行时间的加减操作。timedelta 类的实例可以通过 datetime 模块的 timedelta()
函数创建,其构造方法如下:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
如何计算时间:
from datetime import datetime, timedelta
# 当前时间
now = datetime.now()
# 10 天后的时间
ten_days_later = now + timedelta(days=10)
print(ten_days_later)
# 1 小时前的时间
one_hour_ago = now - timedelta(hours=1)
print(one_hour_ago)
如何计算两个时间的间隔:
from datetime import datetime
# 两个 datetime 对象
date1 = datetime(2021, 7, 1, 0, 0, 0)
date2 = datetime(2021, 6, 1, 0, 0, 0)
# 计算它们之间的时间差
time_diff = date1 - date2
# 输出时间差的天数和秒数
print(time_diff.days, time_diff.seconds) #30 0
使用第三方模块
包管理工具 pip 的使用
Python 标准库中的json
模块在数据序列化和反序列化时性能并不是非常理想,为了解决这个问题,可以使用三方库ujson
来替换json
。语法如下:
pip install ujson
在默认情况下,pip 会访问https://pypi.org/simple/
来获得三方库相关的数据,但是国内访问这个网站的速度并不是十分理想,因此国内用户可以使用豆瓣网提供的镜像来替代这个默认的下载源,操作如下所示。
pip install -i https://pypi.doubanio.com/simple/ ujson
更新ujson
三方库。
pip install -U ujson
删除ujson
三方库。
pip uninstall -y ujson