Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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/1/firebase/6.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中实际使用的SyntaxError内置函数是什么?_Python_Error Handling_Syntax_Syntax Error - Fatal编程技术网

python中实际使用的SyntaxError内置函数是什么?

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 然而,我从未见过函数

python中内置的
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我相信,如果是某个操作/计算/过程的产物,您可以捕获任何异常。技术回答不错!谢谢你做了这么多环顾四周!很好的技术回答!谢谢你做了这么多环顾四周!