为什么在Python中08或09无效?

8 投票
3 回答
3660 浏览
提问于 2025-04-28 02:45

在Python的解释器中,0809看起来是无效的。举个例子:

>>> 01
1
>>> 02
2
>>> 03
3
>>> 04
4
>>> 05
5
>>> 06
6
>>> 07
7
>>> 08
  File "<stdin>", line 1
    08
     ^
SyntaxError: invalid token
>>> 09
  File "<stdin>", line 1
    09
     ^
SyntaxError: invalid token

正如你所看到的,只有0809似乎不太管用。这是特殊的值吗,还是其他什么原因呢?

暂无标签

3 个回答

0

在Python(还有很多其他源自C语言的编程语言)中,数字前面加个0(还有越来越多的情况下加个0O)表示这个数字是八进制的,而不是十进制的。想了解更多细节,可以查看这个链接:https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals

举个例子,看看010这个数字会被计算成什么。

2

如果一个数字以0开头,那就意味着它是一个八进制数:

>>> 010
8
13

以零开头的数字会被当作八进制数来理解。所以在八进制中,8和9是不合法的。只有数字0到7是有效的。

可以在解释器中试试:

>>> 011
9
>>> 012
10
>>> 013
11

撰写回答