为什么Python 3允许"00"作为0的文字而不允许"01"作为1的文字?有充分的理由吗?这种不一致令我感到困惑.(我们正在讨论Python 3,它故意破坏向后兼容性以实现一致性等目标.)
例如:
>>> from datetime import time
>>> time(16, 00)
datetime.time(16, 0)
>>> time(16, 01)
File "<stdin>", line 1
time(16, 01)
^
SyntaxError: invalid token
>>>
Run Code Online (Sandbox Code Playgroud) 我刚刚在我的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
Run Code Online (Sandbox Code Playgroud)
现在,我已经看到了这个,但正如链接所说,对于八进制的0在python中不再起作用(即在python3中不起作用).但这不意味着应该正确解释以0开头的数字的行为吗?在base-2中还是在正常的base-10表示中?既然不是这样,为什么python表现得那样呢?这是一个实施问题吗?或者这是一个语义问题?
之前我听说eval(input(a))会自动将字符串转换为int,但如果我编码
age = eval(input("enter age"))
Run Code Online (Sandbox Code Playgroud)
在输入期间我输入01这是一个错误,但当我编码
age = int(input("enter age"))
Run Code Online (Sandbox Code Playgroud)
01输入效果很好.为什么?