常用内建模块:
1、datetime:Python处理日期和时间的标准库。
我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0
(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。
datetime
表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。
如果要存储datetime
,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关
练习:
import re
from datetime import datetime, timezone, timedelta
def to_timestamp(dt_str, tz_str):
#将字符串转化为datetime
cnow=datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
#获得时区
t=re.split(r'[C:]',tz_str)
dt=int(t[1])
#设置时区
tz_utc_set= timezone(timedelta(hours=dt))
t_now=cnow.replace(tzinfo=tz_utc_set)
#转换时区
now_set=t_now.astimezone(timezone(timedelta(hours=8)))
return now_set.timestamp()
最后一步转换时区实际上是不必要的,设置好时区之后,timestamp()函数会自动转换为本地时间,可以试着将hours=8、9、10,就会发现结果不变。
最后一步可直接变为:
return t_now.timestamp()
2、collection:
- namedtuple:是一个函数,它用来创建一个自定义的
tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
- deque:使用
list
存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list
是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈. -
defaultdict:使用
dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict.
除了在Key不存在时返回默认值,defaultdict
的其他行为跟dict
是完全一样的。 -
OrderedDict:
使用dict
时,Key是无序的。在对dict
做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict。
注意,OrderedDict
的Key会按照插入的顺序排列,不是Key本身排序。OrderedDict
可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key。 -
Counter
是一个简单的计数器。