Python 代码阅读合集介绍:
为什么不推荐Python初学者直接看项目源码
本篇阅读的代码在日期类型上实现了类似
range
的功能,生成一个在两个指定日期之间的日期列表。
本篇阅读的代码片段来自于
30-seconds-of-python
。
daterange
from datetime import timedelta, date
def daterange(start, end):
return [start + timedelta(n) for n in range(int((end - start).days))]
# EXAMPLES
from datetime import date
daterange(date(2020, 10, 1), date(2020, 10, 5))
# [date(2020, 10, 1), date(2020, 10, 2), date(2020, 10, 3), date(2020, 10, 4)]
daterange
函数接收一个开始日期和一个终止日期,返回这两个日期之间的日期列表,包括开始日期,不包括终止日期。
函数使用
datetime
模块里的类型和方法对日期进行处理。
-
首先将两个
date
类型的日期相减,得到
timedelta
类型的日期差值
timedelta = date1 - date2
。
-
然后通过
timedelta
的
days
属性获取相差的天数。
-
将天数差值转换为
int
数据后,通过
range
函数生成一个从零开始的可迭代对象,并用
for
语句进行访问。
-
最后使用
date2 = date1 + timedelta
的运算形式,通过对开始日期加上相差日期,计算中间的日期。最后形成一个
date
类型的列表。
具体
datetime
模块的内容和相关的计算规则可以查看
Python
的
官方文档
。