2017-11-15 8 views
1

を解析するとき、私はCPython2とPypy2両方の行動と対照的な、CPython3とPypy3と、次の事実に気づいた:奇数行動整数

のpython3でコード収量にエラーを解析するとき、それは先行ゼロのようになります。 を除き、非常に単一の番号は0です。従って00は有効ですが、042は有効ではありません。

Python2では、すべての整数に先行ゼロが許されています。したがって、00042が有効です。

なぜPythonは両方のバージョン間で動作を変更しましたか?

答えて

2

のPython 3は、(ベース10以外の)すべての整数リテラルが定義された方法を標準化:0?dddd...?ベースを示す単一文字であり、各dは、適切な塩基の数字として解釈されます。 0...は例外として保持されました.0は任意のベースで0であり、明示的なベース指定子が必要となる前に受け入れられました。

これに関連した最大の変更点は、先行するゼロがあるが明示的な基本指定子がない数字はもはや8進数であるとはみなされないということです。パイソン2(小数点以下34の進表現として0420o42両方を受け入れ初期Pythonの歴史の中で、唯一の3つの有効なリテラルは、16進数が指定子と一つだけであると、あった。0o...0b...両方の後添加

ました