You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含assert语句的Python函数返回类型及类型注解如何定义?

为带断言的Python函数添加正确的类型注解

你的函数在断言通过时返回None,失败时抛出AssertionError,类型注解的核心是描述合法调用场景下的类型契约——类型检查器(如mypy)默认假设断言的前置条件会被满足,不会处理断言失败的分支(这属于运行时错误范畴)。

基础类型注解(针对整数参数)

如果函数仅接收整数类型参数,直接明确参数和返回值类型即可:

def foo(a: int, b: int) -> None:
    assert a == b, "a isn't equal to b"

通用类型注解(支持任意可比较类型)

如果需要函数支持任意相同类型的可比较参数(比如字符串、浮点数),可以用泛型TypeVar实现通用约束:

from typing import TypeVar

T = TypeVar('T')

def foo(a: T, b: T) -> None:
    assert a == b, "a isn't equal to b"

这里T代表任意类型,约束a和b必须为同一类型,同时隐含要求该类型支持==比较操作。

类型检查逻辑说明

  • mypy等工具会将断言视为前置条件,默认认为调用者会保证a == b成立,因此不会针对断言失败的分支做类型推导。
  • 当传入不符合条件的参数(如foo(3,4)),mypy不会强制报错(除非启用--strict或--warn-unused-asserts等严格选项),但运行时会正常抛出AssertionError——类型检查负责保证类型合规,断言负责运行时的业务逻辑校验,二者职责清晰。

内容的提问来源于stack exchange,提问作者maskalev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:32:19