首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python无法处理以0开头的数字字符串。为什么?

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

Stack Overflow用户
提问于 2012-10-22 22:31:30
回答 1查看 10.2K关注 0票数 22

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

代码语言:javascript
复制
>>> 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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 22:33:40

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

代码语言:javascript
复制
a = 012 + 013

然后将它移植到Python3上,它仍然可以工作--它只是给出了a = 25,而不是您之前期望的a = 21 (十进制)。祝你在追踪这个bug时玩得开心。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13013638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档