Python3.8中为什么00/000000合法但03触发前导零语法错误
问题现象
在Python 3.8环境测试时发现,输入00或000000可正常返回整数0,但是输入03会触发语法错误,报错详情如下:
>>> 000 0 >>> 03 File "<stdin>", line 1 03 ^ SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
核心原因
这个差异是Python 3的十进制整数字面量语法规则明确规定的:
- 规则要求十进制整数禁止带前导零,避免和Python 2中前导零代表八进制数的旧语法产生歧义
- 仅全零的多零写法被作为特殊例外兼容,
00、000000这类写法都会被直接解析为整数0,不会触发语法错误 - 如果需要表示八进制数,必须添加
0o前缀,比如0o3对应十进制的3,是合法写法
内容的提问来源于stack exchange,提问作者Philippe Remy
相关产品推荐
相关产品推荐

