Python参数类型标注:何时使用Dict/List与dict/list?
Python参数类型标注:dict/list 与 Dict/List的使用说明
核心规则
- Python 3.9及以上版本:优先用小写的
dict/list,原生支持泛型标注(比如dict[str, list]) - Python 3.8及以下版本:必须用大写的
Dict/List(需要从typing模块导入),因为原生类型不支持泛型语法
详细说明
1. 版本差异是关键
- 在Python 3.9之前,
dict、list这类内置类型不能直接加泛型参数(写dict[list]会直接报错),必须用typing模块提供的大写类型别名,使用前得先导入:from typing import Dict, List def execute_signals(self, parameter1: Dict[List], parameter2: Dict) -> List[Dict]: # 3.8及以下版本的正确写法 pass - 从Python 3.9开始,PEP 585标准允许原生类型直接支持泛型,这时可以直接用小写的
dict/list写标注,不用再导入typing模块:def execute_signals(self, parameter1: dict[list], parameter2: dict) -> list[dict]: # 3.9+版本的推荐写法 pass
2. 混合写法不推荐
你给出的第三种混合写法(比如dict[List])属于风格不统一,既不符合旧版本规范,也没必要在新版本里这么写,建议统一用一种风格,要么全小写原生类型,要么全用typing模块的大写类型。
3. 兼容多版本的小技巧
如果你的代码需要兼容多个Python版本,可以:
- 一直使用
typing模块的大写类型(比如Dict/List),同时导入from __future__ import annotations延迟类型解析,避免版本报错 - 或者使用
typing-extensions库来兼容新特性
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

