在Python 3中,数字前导零是不允许的。例如:
050123
等是不允许的,但应改为
5和
123。
但是,在Python 2中,前导零表示该数字是一个 八进制数
(以8为底),因此,
04或分别
03表示
4和
3,并且以八进制表示,但
08由于它不是有效的八进制数而将无效。
在Python 3中,八进制的语法更改为:
0o100o4
(以及使用
0b或
0x前缀允许其他基数,例如二进制和十六进制。)
至于您的其他问题,Python解释器将Python中的令牌拆分为块的方式,以便它可以理解它(请参阅此处)。在这里,当令牌生成器尝试拆分您的代码时,它不会期望在那里看到零,因此会引发错误。
我建议(与其他答案类似)删除前导零(
(2016,4,3))或使用字符串(
("2016","04","03"))表示它们。


