2017-04-05 13 views
1

pythonがこのように以下のように処理する理由は何ですか?pythonは09を受け入れていませんが07を受け入れます。

>>> a = 099 
    File "<stdin>", line 1 
    a = 099 
     ^
SyntaxError: invalid token 
>>> a = 088 
    File "<stdin>", line 1 
    a = 088 
     ^
SyntaxError: invalid token 
>>> a = 0559 
    File "<stdin>", line 1 
    a = 0559 
     ^
SyntaxError: invalid token 
>>> a = 077 
>>> 

数字0から始まると、それは他のいくつかの番号であれば、それはすべてのエラーを投げていない8または9で、前を受け入れていないようです。何故ですか?

+1

「099」は8進数として解釈されますが、9は有効な8進数ではありません – myaut

+0

も参照してください:http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python -3 –

答えて

2

Cのように、0で始まる整数リテラルは、の8進数にあります。数字8と数字9は8進数では存在しません(それぞれ010とと書かれています)ので、これは構文エラーです。

>>> 010 
8 
>>> 08 
    File "<stdin>", line 1 
    008 
    ^
SyntaxError: invalid token 

Python 3では、この機能はほとんど知られていません。そこでは、0で始まるゼロでないリテラルは構文エラーです。

+0

ではありません。_all_リテラル:http://stackoverflow.com/questions/43071916/why-does-000-evaluate-to-0-in-python-3 –

+0

pythonの3つの8進数の接頭辞は今や '0o'です –

関連する問題