Python无法处理以0开头的数字字符串。为什么?

发布于 2021-01-29 14:10:26

我刚刚在python解释器上执行了以下程序:

>>> def mylife(x):
...     if x>0:
...             print(x)
...     else:
...             print(-x)
... 
>>> mylife(01)
File "<stdin>", line 1
mylife(01)
        ^
SyntaxError: invalid token
>>> mylife(1)
1
>>> mylife(-1)
1
>>> mylife(0)
0

现在,我已经看到了,但是正如链接所言,八进制的0在python中不再起作用(即在python3中不起作用)。但这是否意味着应该正确解释以0开头的数字的行为?是以base-2还是以正常base-10表示?既然不是这样,为什么python会那样表现呢?这是实施问题吗?还是语义问题?

关注者
0
被浏览
289
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我的猜测是,由于012在python3.x中不再是八进制文字常量,因此他们不允许使用该012语法以避免奇怪的向后兼容错误。考虑使用八进制常量的python2.x脚本:

    a = 012 + 013
    

    然后将其移植到python 3,它仍然可以工作-它只是提供给您a = 25而不是a = 21您以前期望的(十进制)。追踪该错误很有趣。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看