Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无效令牌和无效语法_Python_Python 3.x - Fatal编程技术网

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)解析器有关,它一次只向前看一个

我对python的错误案例有一个问题。我在这里试过

>>> 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
    ,则该令牌显然无效,解析立即停止;鉴于
  • 如果随后的标记碰巧无效,那么在早期阶段不会检测到,解析将继续进行,直到整行被拒绝为无效语法
您可以在空闲状态下突出显示(仅突出显示<代码>0o与整行突出显示)中看到这种差异,如果您尝试一些替代方案:

>>> 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>>>无效令牌,那么哪一个是无效令牌?为什么不使用无效语法?@BankComSci
2
在Python 3.x中,它要求前导
0
后的标记为
o
o
<代码>0o2492将给出“无效语法”<在Python2.x中,代码>9,因为前导的
0
(带或不带
o
/
o
)意味着八进制。@BankComSci出于兴趣:这只是您想要的第一位(
8
不是有效的八进制数字),还是第二位(为什么消息因两个无效文本而不同)?我有最后一个问题。02492>>>无效令牌,那么哪一个是无效令牌?为什么不使用无效语法?@BankComSci
2
在Python 3.x中,它要求前导
0
后的标记为
o
o
<代码>0o2492将给出“无效语法”9,因为前导的
0
(带或不带
o
/
o
)表示八进制。