为什么Python不接受以0开头的整数作为有效代码?

时间:2018-10-14 22:38:39

标签: python-3.x variables

我知道您不能将变量定义为

height = 06

我们为什么不能这样做?是的,没有整数以0开头,但是在数学上,06与6相同,为什么编程语言不允许我们以这种方式定义它(即使没有实际用途),而不是抛出错误?

如果以这种方式定义变量,是否有任何特定问题会引起问题?在使用或打印此类变量时,解释器/编译器可以将其仅用作“ 6”,但是为什么在我们仅定义时抛出错误?只是约定吗?

2 个答案:

答案 0 :(得分:6)

如果您查看integer literals的定义,则会看到:

  

请注意,不允许使用非零十进制数字开头的零。这是为了消除Python在3.0版之前使用的C样式八进制文字。

C和Python 2都使用“ 0x”前缀表示十六进制数字,使用“ 0”前缀表示八进制数字。

Python 3分别使用“ 0x”和“ 0o”。

请注意,从字符串转换为整数时,可以为前导零:

In [1]: int('06')
Out[1]: 6

答案 1 :(得分:2)

请查看此提示,进一步解释原因: 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]
>>>