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

Python函数参数类型标注使用普通{}与typing.Dict有什么区别

参考如下定义的函数:

import typing

def foo(dict_1: {}, dict_2: typing.Dict):
    pass

两种参数类型标注的区别主要有以下几点:

  • 语义完全不同
    {}作为类型标注时,会被类型检查器识别为不含任何键的空字典类型,后续对dict_1做任何新增键、访问键的操作都会触发类型报错。
    typing.Dict是官方定义的标准字典泛型类型,未指定键值类型参数时默认等价于Dict[Any, Any],支持任意键值类型的字典,增删改查操作都不会触发类型校验错误。
  • 兼容性不同
    typing.Dict是Python 3.5引入类型提示体系时就推出的标准标注写法,所有支持类型检查的Python版本和工具都能正确识别。
    {}作为类型标注是TypedDict相关特性推出后的特殊写法,只有较新的类型检查器(如mypy 0.800+、pyright等)能正确识别语义,旧版本工具要么直接忽略该标注,要么会抛出识别错误。
  • 适用场景不同
    {}仅适合用来标注完全不会新增任何键的空字典参数,绝大多数业务场景下都不会用到这个写法。
    typing.Dict(Python 3.9+可直接替换为内置的dict)是通用的字典类型标注方式,适合所有需要标注字典类型的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:54:02