为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2019-11-04 09:51:20
我刚刚在python解释器上执行了以下程序:>>> def mylife(x):...     if x>0:...             print(x)...     else:...             print(-x)... >>> mylife(01)File "<stdin>", line 1mylife(01)        ^SyntaxError: invalid token>>> mylife(1)1>>> mylife(-1)1>>> mylife(0)0现在,我已经看到了这一点,但是正如链接所言,八进制的0在python中不再起作用(即在python3中不起作用)。但这是否意味着应该正确解释以0开头的数字的行为?以base-2还是以正常base-10表示?既然不是这样,为什么python会表现出这样的行为?这是实施问题吗?还是语义问题?
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

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


a = 012 + 013

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


查看完整回答
反对 回复 2019-11-04
  • 2 回答
  • 0 关注
  • 1959 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信