Python标记器在解析整数时的奇数行为

2024-04-24 00:49:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到CPython3和Pypy3的以下事实,与CPython2和Pypy2的行为形成对比:

在Python3中,当解析代码产生错误时,它看起来像前导零,除了一个非常单一的数字,它是0。因此00是有效的,但不是042

在Python2中,所有整数都允许前导零。因此00042是有效的

为什么Python会在两个版本之间改变其行为


Tags: 代码版本错误数字整数pypy3python3事实
1条回答
网友
1楼 · 发布于 2024-04-24 00:49:54

Python 3标准化了所有整数文本(除基数10外)的定义方式:0?dddd...,其中?是表示基数的单个字母,每个d被解释为相应基数中的一个数字0...作为例外保留,因为0在任何碱基中都是0,并且在需要显式的碱基说明符之前被接受为0

与此相关的最大变化是,具有前导零但没有显式基说明符的数字不再被假定为八进制数。Python2接受0420o42作为十进制34的八进制表示(在Python的历史早期,只有三个有效的文本,十六进制是唯一带有说明符的文本)0o...0b...都是后来添加的

相关问题 更多 >