gpt4 book ai didi

具有正确语法的 Python SyntaxError

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:57 25 4
gpt4 key购买 nike

为什么这段代码给我一个语法错误:

eval(1485*'not ' + '1')

显然语法是正确的。低于 1485 工作正常。对于 1496 及更高版本,我会遇到内存错误。我认为它应该引发 MemoryError 而不是 SyntaxError。

最佳答案

解析器有限制,而你正在触及它们。参见 http://bugs.python.org/issue1881进行讨论,但您设法在其中添加了足够多的 not 运算符以耗尽解析器堆栈空间。

您可以通过嵌套列表达到相同的限制,参见 http://bugs.python.org/issue215555 :

>>> eval(100 * '[' + 100 * ']')
s_push: parser stack overflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError

引用后一篇报道:

There is a limit that is based on the C stack, because the parser is recursive descent.

提供达到该限制的代码也被视为语法错误;例如连续 1485 个 not 运算符是疯狂的,不可能被认为是有效的 Python。 :-)

对于某些长度,您收到 EOF 错误而不是 MemoryError 的原因很简单,分词器设法到达这些长度的行尾(并发出 EOF 信号),然后 解析器堆栈溢出,而不是在分词器看到行尾之前解析器堆栈溢出。

关于具有正确语法的 Python SyntaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com