2013-03-14 4 views
2

Python, кажется, способен принимать ведущие нули для любого числа, кроме 08 или 09. Например,ведущие нули в питона

a = 04 

работы в интерпретатором, но

a = 08 

возвращается

SyntaxError: invalid token 

Я использую python 2.7.3 на OSX, а другие смогли дублировать ошибку. Что дает?

+0

, связанные с: http://stackoverflow.com/questions/13013638/python-cannot-handle-numbers-string-starting-with-0-why/13013678#13013678 – mgilson

+0

Обратите внимание, что ' a = 044' "работает", но, вероятно, не делает то, что вы ожидали. – abarnert

ответ

11

Номера с ведущим нулем в них интерпретируются как восьмеричные, где цифры 8 и 9 не существуют.

Это еще хуже в Python 3, ведущие нули - это синтаксическая ошибка, независимо от того, какие цифры вы используете. См. What’s New In Python 3.0 в разделе «Новые восьмеричные литералы». Также PEP 3127.

+2

В Python3 синтаксис теперь '0o123'. –

+2

Я бы сказал, что это намного лучше * в Python 3, потому что тогда путаница OP была даже не возникла. –

+0

Это абсолютно безумно. Большое вам спасибо за ваш ответ! – user2171504

2

Когда вы начинаете число с 0, Python видит его как восьмеричное. Таким образом, в то время как да, восьмеричный 04 равен десятичному значению 04, но восьмеричный 08 даже не существует (поскольку восьмеричные цифры могут быть только в диапазоне [0,7]).

Найдено здесь: Python: Invalid Token

+2

Обратите внимание, что '40'! =' 040', хотя оба являются действительными литералами. – 2013-03-14 20:24:31

Смежные вопросы