Python在安装的时候会默认自带一些标准库,这里将介绍一下几个常用标准库的用法,不足之处欢迎补充。
文章目录
time
time库的基本介绍
1、time库是python中处理时间的标准库,可以用于计算机的时间表达,提供获取时间并格式化输出功能,还可以提供系统级精确计时功能,用于程序性能分析。比如我们需要记录某个程序运行的时间长短等。
2、time包含三类函数
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep() perf_counter()
时间获取
函数 | 描述 |
---|---|
time() | 获取当前时间戳,即计算机内部时间值,浮点数 |
ctime() | 获取当前时间并以易读方式表示,返回字符串 |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 |
>>> time.time()
1516939876.6022282
>>> time.ctime()
'Fri Jan 26 12:11:16 2018'`
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=1,
tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16,
tm_wday=4, tm_yday=26, tm_isdst=0)
时间格式化
函数 | 描述 |
---|---|
strftime(tpl, ts) | tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量 |
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
'2018-01-26 12:55:20'
- 格式化控制符
格式化字符串 | 日期/时间说明 | 值范围和实例 |
---|---|---|
%Y | 年份 | 0000~9999,例如:1900 |
%m | 月份 | 01~12,例如:10 |
%B | 月份名称 | January~December,例如:April |
%b | 月份名称缩写 | Jan~Dec,例如:Apr |
%d | 日期 | 01~31,例如:25 |
%A | 星期 | Monday~Sunday,例如:Wednesday |
%a | 星期缩写 | Mon~Sun,例如:Wed |
%H | 小时(24h制) | 00~23,例如:12 |
%h | 小时(12h制) | 01~12,例如:7 |
%p | 上/下午 | AM,PM,例如:PM |
%M | 分钟 | 00~59,例如:26 |
%S | 秒 | 00~59,例如:26 |
函数 | 描述 |
---|---|
strptime(str, tpl) | str是字符串形式的时间值;tpl是格式化模板字符串,用来定义输入效果 |
>>>t = time.gmtime()
>>>time.strftime("%Y-%m-%d %H:%M:%S",t)
>>>timeStr = '2018-01-26 12:55:20'
>>>time.strptime(timeStr, “%Y-%m-%d %H:%M:%S”)
程序计时作用
函数 | 描述 |
---|---|
perf_counter() | 返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,连续调用差值才有意义 |
sleep(s) | s拟休眠的时间,单位是秒,可以是浮点数 |
>>>start = time.perf_counter()
318.66599499718114
>>>end = time.perf_counter()
341.3905185375658
>>>end - start
22.724523540384666
>>>def wait():
time.sleep(3.3)
>>>wait() #程序将等待3.3秒后再退出
datetime
datetime库的基本介绍
1、datetime库可以从系统中获得时间,并以用户选择的格式输出。
date库以格林威治时间为基础,每天由3600*24秒精准定义。该库包括两个常量:datetime.MINYEAR 与 datetime.MAXYEAR,分别表示datetime所能表示的最小、最大年份,值分别为1与9999。
2、datetime库以类的方式提供多种日期和时间表达方式。
(1)datetime.data:日期表示类,可以表示年、月、日等。
(2)datetime.time:时间表示类,可以表示小时、分钟、秒、毫秒等。
(3)datetime.datetime:日期和时间表示的类,功能覆盖date和time类。
(4)datetime.timedelta:与时间间隔有关的类
(5)datetime.tzinfo:与时区有关的信息表示分类。
由于datetime.datetime 类表达形式最为丰富,这里主要介绍这个类的使用。
datetime库的使用
1、引用
>>> from datetime import datetime
2、datetime类的使用方法是首先创建一个datetime对象,然后通过对象的方法和属性显示时间。创建datetime对象有3种方法:datetime.now(),datetime.utcnow(),datetime.datetime()
- datetime.now()
作用:返回一个datetime 类型,表示当前的日期和时间,精确到微秒
参数:无
>>> from datetime import datetime
>>> today = datetime.now()
>>> today
datetime.datetime(2019, 4, 15, 23, 11, 46, 854869)
- datetime.utcnow()
作用:返回一个datetime类型,表示当前日期和时间的UTC表示,精确到微秒
参数:无
>>> today = datetime.utcnow()
>>> today
datetime.datetime(2019, 4, 15, 15, 14, 56, 60777)
- datetime()
可以直接使用datetime()构造一个日期和时间对象,使用方法如下:
datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0)
作用:返回一个datetime类型,表示指定的日期和时间,可以精确到微秒
参数如下:
year:指定的年份MINYEAR<=year<=MAXYEAR
month:指定的月份,1~12
day:指定的日期,1~所对应月份上限
hour:指定的小时,0~24
minute:指定的分钟数
second:指定的秒数
microsecond:指定的微秒数,0~1000000
datetime的格式化
属性 | 描述 |
---|---|
someday.isoformat() | 采用ISO8601标准显示时间 |
someday.isoweekday() | 根据日期计算星期后返回1~7,对应星期一到星期日 |
someday.strftime(format) | 根据格式化字符串format进行格式显示的方法 |
- isoformat()和isoweekday()方法的使用如下:
>>> someday = datetime(2019,4,16,22,23,33,2)
>>> someday
datetime.datetime(2019, 4, 16, 22, 23, 33, 2)
>>> someday.isoformat()
'2019-04-16T22:23:33.000002'
>>> someday.isoweekday()
2
- strftime()方法的使用
格式化字符串 | 日期/时间 |
---|---|
%Y | 年份 |
%m | 月份 |
%B | 月名 |
%b | 月名缩写 |
%d | 日期 |
%A | 星期 |
%a | 星期缩写 |
%H | 小时(24h制) |
%M | 分钟 |
%S | 秒 |
%x | 日期 |
%X | 时间 |
calendar
用法:import calendar
calen = calendar.Calendar()
ca1 = calen.iterweekdays()
# 输出;<generator object Calendar.iterweekdays at 0x0044D180>
ca1 = calen.itermonthdays(year=2018,month=7)
for i in ca1:
print(i)
# 输出:0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0
# 迭代指定的月份,0表示非本月日期
ca2 = calen.itermonthdates(year=2018,month=7)
for i in ca2:
print(i)
# 输出:2018-06-25 2018-06-26 2018-06-27 2018-06-28 2018-06-29 2018-06-30 2018-07-01 2018-07-02 2018-07-03 2018-07-04 2018-07-05 2018-07-06 2018-07-07 2018-07-08 2018-07-09 2018-07-10 2018-07-11
# 迭代指定月份的日历,格式为yyyy-mm-dd
ca3 = calen.itermonthdates(year=2018, month=7)
for i in ca3:
print(ca3)
# 输出的是文本日历
random
random库是使用随机数的Python标准库
- 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
- random库主要用于生成随机数
- 使用random库: import random
random库包括两类函数,常用共8个
- 基本随机数函数: seed(), random()
- 扩展随机数函数: randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
基本随机数函数
函数 | 描述 |
---|---|
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) #产生种子10对应的序列 |
random() | 生成一个[0.0, 1.0)之间的随机小数 >>>random.random() 0.5714025946899135 |
>>> import random
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.random()
0.4288890546751146
…
>>> import random
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.seed(10)
>>> random.random()
0.5714025946899135
扩展随机数函数
函数 | 描述 |
---|---|
randint(a, b) | 生成一个[a, b]之间的整数 >>>random.randint(10, 100) 64 |
randrange(m, n[, k]) | 生成一个[m, n)之间以k为步长的随机整数 >>>random.randrange(10, 100, 10) 80 |
getrandbits(k) | 生成一个k比特长的随机整数 >>>random.getrandbits(16) 37885 |
uniform(a, b) | 生成一个[a, b]之间的随机小数 >>>random.uniform(10, 100) 13.096321648808136 |
choice(seq) | 从序列seq中随机选择一个元素 >>>random.choice([1,2,3,4,5,6,7,8,9]) 8 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 >>>s=[1,2,3,4,5,6,7,8,9];random.shuffle(s);print(s) [3, 5, 8, 9, 6, 1, 2, 7, 4] |