Python有一套很有用的标准库(standard library),是随着Python安装的时候默认自带的库。
今天要介绍的几个标准库,都是大家在平时可能会经常用到的,分别是:time,datetime,calendar,random.
time库是python中处理时间的标准库,可以用于计算机时间的表达,提供获取系统时间并格式化输出功能,还可以提供系统级精确计时功能,用于程序性能分析。
函数 | 描述 |
---|---|
time() | 获取当前时间戳,就是计算机内部时间值 |
ctime() | 获取当前时间并且以易读的方式表示,返回字符串 |
gmtime() | 获取当前时间,表示为计算机可处理的时间格式 |
>>> import time
>>> time.time()
1554616452.6606421
>>> time.ctime()
'Sun Apr 7 13:54:17 2019'
>>> time.gmtime()
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=5, tm_min=56, tm_sec=14, tm_wday=6, tm_yday=97, tm_isdst=0)
函数 | 描述 |
---|---|
strftime(tpl,ts) | tpl是格式化模板字符串,用来定义输入效果,ts是计算机内部时间类型变量 |
strptime(str,tpl) | str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果 |
>>> import time
>>> t = time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2019-04-07 06:01:44'
>>> import time
>>> str = '2019-04-07 06:01:44'
>>> time.strptime(str,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=7, tm_hour=6, tm_min=1, tm_sec=44, tm_wday=6, tm_yday=97, tm_isdst=-1)
格式化字符串 | 日期/时间 | 值范围 |
---|---|---|
%Y | 年份 | 0001~9999 |
%m | 月份 | 01~12 |
%B | 月名 | January~December |
%b | 月名缩写 | Jan~Dec |
%d | 日期 | 01~31 |
%A | 星期 | Monday~Sunday |
%a | 星期缩写 | Mon~Sun |
%H | 小时(24h制) | 00~23 |
%M | 分钟 | 00~59 |
%S | 秒 | 00~59 |
函数 | 描述 |
---|---|
sleep(s) | s拟休眠的时间,单位是秒,可以是浮点数 |
perf_counter() | 返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,连续调用差值才有意义。 |
>>> import time
>>> start = time.perf_counter()
>>> end = time.perf_counter()
>>> print(end - start)
12.841975971506235
datetime库提供了一系列由简单到复杂的时间处理方法,可以从系统中获得时间,并以用户选择的格式输出。
datetime库以类的方式提供多种日期和时间表达方式。
创建datetime对象有三种方法:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2019, 4, 7, 14, 32, 2, 42854)
>>> from datetime import datetime
>>> datetime.utcnow()
datetime.datetime(2019, 4, 7, 6, 33, 51, 484251)
>>> from datetime import datetime
>>> someday = datetime(2019, 4, 7, 14, 32, 2)
datetime.datetime(2019, 4, 7, 14, 32, 2)
属性 | 描述 |
---|---|
someday.isoformat() | 采用ISO 8601标准显示时间 |
someday.isoweekday() | 根据日期计算星期后返回1~7,对应星期一到星期日 |
someday.strftime(format) | 根据格式化字符串format进行格式显示的方法 |
>>> from datetime import datetime
>>> someday = datetime(2019, 4, 7, 14, 32, 2)
>>> someday
datetime.datetime(2019, 4, 7, 14, 32, 2)
>>> someday.isoformat()
'2019-04-07T14:32:02'
>>> someday.isoweekday()
7
>>> someday.strftime("%Y-%m-%d")
'2019-04-07'
calendar 模块是python实现的unix 的 cal命令。它可以以标准的模式打印出给定年月的日历。calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型。
点击这里,查看12个函数的用法
#返回一周的第一天
>>> import calendar
>>> calendar.setfirstweekday(firstweekday=0)
>>> print(calendar.firstweekday())
0
#判断指定年是否为闰年,若是,则返回True
>>> import calendar
>>> print(calendar.isleap(2018))
False
>>> print(calendar.isleap(2020))
True
#返回y1和y2之间的闰年数量,包括起始年,不包括终止年
>>> import calendar
>>> print(calendar.leapdays(2018,2020))
0
>>> print(calendar.leapdays(2018,2021))
1
#将星期一设为一周的第一天(周一为0,周日为6)
>>> import calendar
>>> calendar.setfirstweekday(firstweekday=0)
#获取指定日期为星期几
>>> import calendar
>>> print(calendar.weekday(2019,4,8))
0
随机数在计算机应用中非常常见,random库主要用于产生各种分布的伪随机数序列。random库采用Mersenne Twister生成伪随机序列,可以用于除随机性要求更高的加解密算法外的大多数工程应用。
函数 | 描述 |
---|---|
seed() | 初始化随机数种子,默认值为当前系统时间 |
random() | 生成一个[0.0,1.0)之间的随机小数 |
randint(a,b) | 生成一个[a,b]之间的整数 |
getrandbits(k) | 生成一个k比特长度的随机整数 |
randrange(start,stop[,step]) | 生成一个[start,stop)之间以step为步数的随机整数 |
uniform(a,b) | 生成一个[a,b]之间的随机小数 |
choice(seq) | 从序列类型,例如列表中随机返回一个元素 |
shuffle(seq) | 将序列类型中的元素随机排列,返回打乱后的序列 |
sample(pop,k) | 从pop类型中随机选取k个元素,以列表类型返回 |
我挑几个自认为用得比较多的函数来举个例子。
>>> import random
>>> random.random()
0.7678480467199341
>>> import random
>>> random.randint(1,10)
7
>>> random.randint(1,10)
4
>>> import random
>>> a = random.choice(["C","C++","JAVA","PYTHON","R","PHP","SQL"])
>>> print(a)
SQL
>>> import random
>>> a = ["C","C++","JAVA","PYTHON","R","PHP","SQL"]
>>> random.shuffle(a)
>>> print(a)
['JAVA', 'C++', 'PYTHON', 'SQL', 'R', 'C', 'PHP']