python中实际使用的SyntaxError内置函数是什么?
python中内置的python中实际使用的SyntaxError内置函数是什么?,python,error-handling,syntax,syntax-error,Python,Error Handling,Syntax,Syntax Error,python中内置的SyntaxError有什么意义?它似乎没有任何实际用途,因为在运行代码之前,python解释器会找到SyntaxErrors。例如: try: &@!5_+ #SyntaxError except: pass 如果出现SyntaxError,则此操作失败,因为在处理SyntaxError之前找到了它。现在,它可以正常工作,但会无声地失败,就像预期的那样: try: raise SyntaxError except: pass 然而,我从未见过函数
SyntaxError
有什么意义?它似乎没有任何实际用途,因为在运行代码之前,python解释器会找到SyntaxError
s。例如:
try:
&@!5_+ #SyntaxError
except: pass
如果出现SyntaxError
,则此操作失败,因为在处理SyntaxError
之前找到了它。现在,它可以正常工作,但会无声地失败,就像预期的那样:
try:
raise SyntaxError
except: pass
然而,我从未见过函数
或类
或任何引起语法错误的东西。那么,当唯一的用途似乎是毫无意义地提高它时,为什么它存在的如此容易使用和捕获呢?python是否在某个地方引发了一个可以捕获的SyntaxError
?或者它只是为了存在而存在于内置范围中?我认为这是不言自明的:
当解析器遇到语法错误时引发。这可能发生在导入语句中、调用内置函数exec()
或eval()
时,或者在读取初始脚本或标准输入时(也以交互方式)
我认为这是不言而喻的:
当解析器遇到语法错误时引发。这可能发生在导入语句中、调用内置函数exec()
或eval()
时,或者在读取初始脚本或标准输入时(也以交互方式)
解决这个问题的简单方法是搜索这个异常在实践中是如何产生的。我已经下载了CPython源代码,所以我下载了
find . -type f -name "*.py" | xargs grep "raise SyntaxError"
我们看到有一个实用程序脚本进行文件转换,如果它没有在正确的位置看到magic字节,就会引发语法错误。此外,xml
库在解析XPath表达式时使用它们
这意味着它也被处理解析其他事情的用户代码使用。谷歌搜索“raise SyntaxError”显示了许多以这种方式使用的结果
我对Python的内部结构不太熟悉,但我认为,能够以处理其他错误的方式处理源代码中的错误会让事情变得更好。另外,eval
等必须提出一些问题,因为文档和前面的答案都说明了这一点。解决这个问题的简单方法是搜索在实践中如何提出这个异常。我已经下载了CPython源代码,所以我下载了
find . -type f -name "*.py" | xargs grep "raise SyntaxError"
我们看到有一个实用程序脚本进行文件转换,如果它没有在正确的位置看到magic字节,就会引发语法错误。此外,xml
库在解析XPath表达式时使用它们
这意味着它也被处理解析其他事情的用户代码使用。谷歌搜索“raise SyntaxError”显示了许多以这种方式使用的结果
我对Python的内部结构不太熟悉,但我认为,能够以处理其他错误的方式处理源代码中的错误会让事情变得更好。另外,eval
等必须提出一些问题,因为文档和上一个答案都说明了这一点。在您的程序中很少使用SyntaxError
。它通常只在python解释器遇到无效语法时使用
我能想到的唯一一种情况是,如果您对未知值使用exec
或eval
,就会发现SyntaxError
。例如,如果您正在执行用户输入,那么输入可能无效,您需要捕获SyntaxError
在程序中很少使用SyntaxError
。它通常只在python解释器遇到无效语法时使用
我能想到的唯一一种情况是,如果您对未知值使用exec
或eval
,就会发现SyntaxError
。例如,如果您正在执行用户输入,那么输入可能无效,您需要捕获语法错误例如,它可以用于处理使用ast.literal\u eval
解析的项目。例如,它可以用于处理使用ast.literal\u eval
解析的项目。因此导入…
,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?是吗?@EthanK你也会遇到编码错误,比如,但是你能捕捉到它们吗?@EthanK我相信你能捕捉到任何异常,如果它是某个操作/计算/过程的产物。所以导入…
,导入(…)
,执行(…)
和评估(…)
?是吗?@EthanK您也会遇到编码错误,例如,但您能捕获它们吗?@EthanK我相信,如果是某个操作/计算/过程的产物,您可以捕获任何异常。技术回答不错!谢谢你做了这么多环顾四周!很好的技术回答!谢谢你做了这么多环顾四周!