为何Python调用datetime(2018,01,01,10,08,00)会报Invalid token错误?
为什么传入
08给datetime会触发SyntaxError? 先看你给出的代码:
from datetime import datetime datetime(2018,01,01,10,08,00)
运行这段代码会抛出如下错误:
>>> datetime(2018,01,01,10,08,0) SyntaxError: invalid token
而把08改成01-07或者直接写8就没问题,核心原因其实很简单:
- 在Python中,以0开头的整数会被解析为八进制数(类似
0x开头代表十六进制、0b开头代表二进制的规则)。 - 八进制数的有效数字范围只有0-7,
08里的8超出了这个范围,Python无法识别这个合法的八进制数,因此直接抛出语法错误。 - 01-07都是合法的八进制数,会被自动转换成十进制的1-7;直接写
8就是普通的十进制数,自然也不会有问题。
你可以自己做个小验证:
print(07) # 输出7,合法八进制数 print(08) # 直接触发SyntaxError: invalid token
解决这个问题的办法也很直接——去掉数字前面的前导零,直接写十进制数字即可,比如把08改成8,00改成0。
内容的提问来源于stack exchange,提问作者mcv
相关产品推荐
相关产品推荐

