を解析するとき、私はCPython2とPypy2両方の行動と対照的な、CPython3とPypy3と、次の事実に気づいた:奇数行動整数
のpython3でコード収量にエラーを解析するとき、それは先行ゼロのようになります。 を除き、非常に単一の番号は0です。従って00
は有効ですが、042
は有効ではありません。
Python2では、すべての整数に先行ゼロが許されています。したがって、00
と042
が有効です。
なぜPythonは両方のバージョン間で動作を変更しましたか?
を解析するとき、私はCPython2とPypy2両方の行動と対照的な、CPython3とPypy3と、次の事実に気づいた:奇数行動整数
のpython3でコード収量にエラーを解析するとき、それは先行ゼロのようになります。 を除き、非常に単一の番号は0です。従って00
は有効ですが、042
は有効ではありません。
Python2では、すべての整数に先行ゼロが許されています。したがって、00
と042
が有効です。
なぜPythonは両方のバージョン間で動作を変更しましたか?
のPython 3は、(ベース10以外の)すべての整数リテラルが定義された方法を標準化:0?dddd...
、?
ベースを示す単一文字であり、各d
は、適切な塩基の数字として解釈されます。 0...
は例外として保持されました.0は任意のベースで0であり、明示的なベース指定子が必要となる前に受け入れられました。
これに関連した最大の変更点は、先行するゼロがあるが明示的な基本指定子がない数字はもはや8進数であるとはみなされないということです。パイソン2(小数点以下34の進表現として042
と0o42
両方を受け入れ初期Pythonの歴史の中で、唯一の3つの有効なリテラルは、16進数が指定子と一つだけであると、あった。0o...
と0b...
両方の後添加