Почему Python не принимает целые числа, начинающиеся с 0, в качестве допустимого кода? - PullRequest
0 голосов
/ 15 октября 2018

Я понимаю, что вы не можете определить переменную как, скажем,

height = 06

Почему мы не можем это сделать?Да, ни одно целое число не начинается с нуля, но, учитывая, что математически 06 - это то же самое, что и 6, почему языки программирования не позволяют нам определять его таким образом (даже если он не имеет реального использования) вместо того, чтобы выдавать ошибку?

Есть ли что-то конкретное, что могло бы вызвать проблемы, если бы переменные были определены таким образом?При использовании или печати такой переменной интерпретатор / компилятор может использовать ее как «6», но зачем выдавать ошибку, пока мы только определяем?Это просто соглашение?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Посмотрите на этот взгляд, который объясняет причину: https://www.python.org/dev/peps/pep-3127/#motivation

В Python 2:

>>> height = 013
>>> print(height)
11
>>> print(sys.version)
2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609]
>>> 
0 голосов
/ 15 октября 2018

Если вы посмотрите на определение целочисленных литералов , вы увидите:

Обратите внимание, что начальные нули в ненулевом десятичном числе не допускаются.Это для устранения неоднозначности с восьмеричными литералами в стиле C, которые Python использовал до версии 3.0.

И C, и Python 2 использовали префикс «0x» для шестнадцатеричных чисел и префикс «0» для восьмеричных чиселчисла.

Python 3 использует «0x» и «0o» соответственно.

Обратите внимание, что вы можете иметь начальные нули при преобразовании строки в int:

In [1]: int('06')
Out[1]: 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...