5

のような数字を Python インタラクティブ モードで入力して Enter キーを押すと01構文エラーが発生するのはなぜですか?01

00入力されると、インタープリターは と評価しますが、0のような数字01001または a で始まるものを0入力すると、構文エラー: 無効なトークンが表示されます。

プロンプトに入力1,000すると、のタプルに評価されます(1,0)が、代わりに1,001評価されません構文エラーが表示されます。(1,1)

Python インタープリターがそのように動作するのはなぜですか?

4

2 に答える 2

11

歴史的に、ゼロで始まる整数リテラルは 8 進数を表していました。これは Python 3で廃止され、別の構文 ( 0o...) に置き換えられました。

数値が完全にゼロで構成されている場合を除き、古い構文は受け入れられなくなりました。

Python 3.3.0 (default, Dec  1 2012, 19:05:43) 
>>> 0
0
>>> 00
0
>>> 01
  File "<stdin>", line 1
    01
     ^
SyntaxError: invalid token
于 2013-04-12T08:22:37.863 に答える
2

Python 2.x では、整数リテラルの先行ゼロは、8 進数として解釈されることを意味します。これは、0oプレフィックスが必要な Python 3 では削除されました。リテラルの先行ゼロは構文エラーとして残されたため、古い動作に依存する古いコードは、黙って「間違った」回答を返すのではなく、大声で壊れます。

于 2013-04-12T08:23:04.377 に答える