针对返回类型与注解不符的Python函数,如何抛出AssertionError?
如何为类型不匹配的函数抛出AssertionError
这很简单,你可以通过assert语句来验证返回值的类型是否符合类型提示的要求,从而触发AssertionError。这里有两种常见的实现方式:
方法一:在函数内部添加断言检查
直接在函数里对返回值的类型做校验,这样只要函数被调用,就会自动执行检查:
def f(x: int) -> str: result = 0 # 断言返回值必须是str类型,否则抛出AssertionError assert isinstance(result, str), f"返回值类型错误:预期str,实际是{type(result).__name__}" return result # 调用函数就会触发断言错误 f(10)
执行这段代码时,因为result是int类型,不符合断言条件,就会抛出AssertionError: 返回值类型错误:预期str,实际是int。
方法二:在函数调用处添加断言检查
如果你不想修改原函数,可以在调用后对返回结果做校验:
def f(x: int) -> str: return 0 # 调用函数并检查返回值类型 output = f(5) assert isinstance(output, str), f"函数返回值类型不匹配:预期str,实际得到{type(output).__name__}"
这种方式下,当你调用f(5)得到0(int类型)后,断言会失败,同样触发AssertionError。
补充说明
assert语句的工作逻辑是:如果第一个表达式为False,就会抛出AssertionError,并可选地带上第二个参数作为错误提示信息,这样能让错误原因更清晰。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

