Python 无效令牌和无效语法
我对python的错误案例有一个问题。我在这里试过Python 无效令牌和无效语法,python,python-3.x,Python,Python 3.x,我对python的错误案例有一个问题。我在这里试过 >>> 0o08 SyntaxError: invalid syntax >>> 0o8 SyntaxError: invalid token 我想知道: 哪个是无效令牌,0、o或8 为什么0o08语法无效 以0o开头的整数文本被解释为。Per: 令牌8不是有效的octdigit,因此不允许使用八进制文字,因此为“无效令牌” 错误消息不同的原因是(与Python的LL(1)解析器有关,它一次只向前看一个
>>> 0o08
SyntaxError: invalid syntax
>>> 0o8
SyntaxError: invalid token
我想知道:
- 哪个是无效令牌,
、0
或o
李>8
- 为什么
语法无效0o08
0o开头的整数文本被解释为。Per:
令牌8
不是有效的octdigit
,因此不允许使用八进制文字,因此为“无效令牌”
错误消息不同的原因是(与Python的LL(1)解析器有关,它一次只向前看一个令牌):
- 如果
0o
之后的第一个令牌不是octdigit
,则该令牌显然无效,解析立即停止;鉴于
- 如果随后的标记碰巧无效,那么在早期阶段不会检测到,解析将继续进行,直到整行被拒绝为无效语法
您可以在空闲状态下突出显示(仅突出显示<代码>0o
与整行突出显示)中看到这种差异,如果您尝试一些替代方案:
>>> 0ok # first token is invalid
SyntaxError: invalid token
>>> 0o18 # subsequent token is invalid
SyntaxError: invalid syntax
>>> 0o10 # all tokens are valid
8
以
0o
开头的整数文字解释为。Per:
令牌8
不是有效的octdigit
,因此不允许使用八进制文字,因此为“无效令牌”
错误消息不同的原因是(与Python的LL(1)解析器有关,它一次只向前看一个令牌):
- 如果
之后的第一个令牌不是0o
,则该令牌显然无效,解析立即停止;鉴于octdigit
- 如果随后的标记碰巧无效,那么在早期阶段不会检测到,解析将继续进行,直到整行被拒绝为无效语法
>>> 0ok # first token is invalid
SyntaxError: invalid token
>>> 0o18 # subsequent token is invalid
SyntaxError: invalid syntax
>>> 0o10 # all tokens are valid
8
因为o不是一个数字。你期望0o8是多少?顺便说一下,八进制值(十进制)
8
是0o10
我已经试着整理你的问题了;这和你想知道的相符吗?因为“o”不是一个数字。你期望0o8是多少?顺便说一下,八进制值(十进制)8
是0o10
我已经试着整理你的问题了;这是否仍然符合您想要知道的内容?@BankComSci出于兴趣:这只是您想要的第一位(8
不是有效的八进制数字),还是第二位(为什么两个无效文本的消息不同)?我还有最后一个问题。02492>>>无效令牌,那么哪一个是无效令牌?为什么不使用无效语法?@BankComSci2
在Python 3.x中,它要求前导0
后的标记为o
或o
<代码>0o2492将给出“无效语法”<在Python2.x中,代码>9,因为前导的0
(带或不带o
/o
)意味着八进制。@BankComSci出于兴趣:这只是您想要的第一位(8
不是有效的八进制数字),还是第二位(为什么消息因两个无效文本而不同)?我有最后一个问题。02492>>>无效令牌,那么哪一个是无效令牌?为什么不使用无效语法?@BankComSci2
在Python 3.x中,它要求前导0
后的标记为o
或o
<代码>0o2492将给出“无效语法”0
(带或不带o
/o
)表示八进制。