带有异常的 Python 类型提示

新手上路,请多包涵

我有一个看起来像这样的函数:

 def check_for_errors(result):
    if 'success' in result:
        return True

    if 'error' in result:
        raise TypeError

    return False

在成功运行此函数时,我应该得到 bool ,但如果出现错误,我应该得到 TypeError - 这没关系,因为我在另一个函数中处理它。

我的函数第一行如下所示:

 def check_for_errors(result: str) -> bool:

我的问题是:我应该在类型提示中提及错误吗?

原文由 Yuval Pruss 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 490
2 个回答

类型提示不能说明异常。它们完全超出了该功能的范围。但是,您仍然可以在文档字符串中记录异常。

来自 PEP 484——类型提示

例外情况

没有提议列出显式引发的异常的语法。目前此功能唯一已知的用例是文档,在这种情况下,建议将此信息放在文档字符串中。

Guido van Rossum 强烈反对向类型提示规范添加异常,因为他不希望最终出现异常需要 _检查_(在调用代码中处理)或在每个级别显式声明的情况。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 4.0 许可协议

记录错误通常是个好主意。这意味着使用您的函数的其他开发人员将能够处理您的错误,而无需通读您的代码。

原文由 Jim Wright 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题