Origin of exception message in datetime module. ValueError: year 10000 is out of range
Origin of exception message in datetime module. ValueError: year 10000 is out of range
使用 Python 3.8:
In [12]: datetime(10000, month=2, day=1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-f4737756e718> in <module>
----> 1 datetime(10000, month=2, day=1)
ValueError: year 10000 is out of range
请注意,我知道 datetime.datetime 不支持五位数的年份,所以我不是在问为什么 10000 不起作用。
我想知道 ValueError 异常消息的来源,因为我在 lib/datetime.py 代码中没有看到任何类似 year {year} is out of range
的内容。
唯一的相似之处在于 line 894 但不是同一封邮件。
datetime.datetime
的实际实现在 _datetimemodule.c
and not in datetime.py
。
在 C 实现中,您可以看到,正如@wjandrea 在 line 420 中的函数 check_date_args
中提到的 PyErr_Format(PyExc_ValueError, "year %i is out of range", year);
。
那个最终从 datetime_new
调用,用于构造 datetime.datetime
,请参阅 line 6334。
关于如何从 datetime.py
到 c 实现的问题,有 this line:
from _datetime import *
使用 Python 3.8:
In [12]: datetime(10000, month=2, day=1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-f4737756e718> in <module>
----> 1 datetime(10000, month=2, day=1)
ValueError: year 10000 is out of range
请注意,我知道 datetime.datetime 不支持五位数的年份,所以我不是在问为什么 10000 不起作用。
我想知道 ValueError 异常消息的来源,因为我在 lib/datetime.py 代码中没有看到任何类似 year {year} is out of range
的内容。
唯一的相似之处在于 line 894 但不是同一封邮件。
datetime.datetime
的实际实现在 _datetimemodule.c
and not in datetime.py
。
在 C 实现中,您可以看到,正如@wjandrea 在 line 420 中的函数 check_date_args
中提到的 PyErr_Format(PyExc_ValueError, "year %i is out of range", year);
。
那个最终从 datetime_new
调用,用于构造 datetime.datetime
,请参阅 line 6334。
关于如何从 datetime.py
到 c 实现的问题,有 this line:
from _datetime import *