在Python语言中,在混合类型的数字运算中,较窄的类型是widened to that of the other,例如int
+ float
float
→
In [57]: 3 + 0.1
Out[57]: 3.1
但对于datetime.date
,我们有datetime.date
+ datetime.timedelta
datetime.date
,而不是datetime.datetime
In [58]: datetime.date(2013, 1, 1) + datetime.timedelta(seconds=42)
Out[58]: datetime.date(2013, 1, 1)
为什么扩展推理适用于数字,而不适用于date
/datetime
/timedelta
(背景:我正在编写一个文件格式的读取例程,其中一个字段是年份,一个字段是一年中的某一天,一个字段是从午夜开始的毫秒数。当然,简单而明确的解决方案是datetime.datetime(2013, 1, 1, 0, 0, 0) + datetime.timedelta(seconds=42)
,但同样可以推断应该将3 + 0.1
重写为3.0 + 0.1
)。
https://stackoverflow.com/questions/37165952
复制相似问题