代码之家  ›  专栏  ›  技术社区  ›  Eb946207 mourshad

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

  •  1
  • Eb946207 mourshad  · 技术社区  · 7 年前

    这件事的意义是什么 SyntaxError python内置的?它似乎没有任何实际用途,因为 由python解释器找到 之前 代码正在运行。例子:

    try:
        &@!5_+ #SyntaxError
    except: pass
    

    这失败了,因为 语法错误 因为 语法错误 在可以处理之前发现。现在,它可以正常工作,但会无声地失败,就像预期的那样:

    try:
        raise SyntaxError
    except: pass
    

    然而,我从来没有见过一个 function 或 class 或 任何东西 语法错误 . 那么,当唯一的用途似乎是毫无意义地提高它时,为什么它存在的如此容易使用和捕获呢?有没有什么地方是python提出的 它能被抓住吗?或者它只是在内置范围中退出,只是为了在那里?

    3 回复  |  直到 7 年前
        1
  •  3
  •   vishes_shell hendrixski    7 年前

    documentation 这是不言自明的:

    当解析器遇到语法错误时引发。这可能发生在import语句中,也可能发生在对内置函数的调用中 exec() 或 eval() ,或在读取初始脚本或标准输入时(也以交互方式)。

        2
  •  1
  •   Picachieu    7 年前

    很少有人使用它 SyntaxError

    我能想到的唯一一种情况是你会抓到 语法错误 如果您正在使用 exec 或 eval 关于未知值。例如,如果您正在执行用户输入,那么输入可能无效,您需要捕获 语法错误 .

        3
  •  1
  •   Eb946207 mourshad    7 年前

    find . -type f -name "*.py" | xargs grep "raise SyntaxError"
    

    我们看到有一个实用程序脚本进行文件转换,如果它没有在正确的位置看到magic字节,就会引发语法错误。此外 xml

    这意味着它也被处理解析其他事情的用户代码使用。谷歌搜索“raise SyntaxError”显示了许多以这种方式使用的结果。

    我对Python的内部结构不太熟悉,但我认为,能够以处理其他错误的方式处理源代码中的错误会让事情变得更好。加 eval 等等。必须提出一些问题,如文档和先前的回答状态。

    推荐文章