Python 类型提示有异常

Python type hinting with exceptions

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

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:

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

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

来自PEP 484 -- Type Hints

Exceptions

No syntax for listing explicitly raised exceptions is proposed. Currently the only known use case for this feature is documentational, in which case the recommendation is to put this information in a docstring.

Guido van Rossum has strongly opposed adding exceptions 到类型提示规范,因为他不想在异常需要 checked 的情况下结束(在调用代码)或在每个级别显式声明。

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

我通常使用:

def check_for_errors(result: str) -> bool | YourException: