Python最新版本类型标注:list/List选哪个?如何用Linter强制统一?
类型声明写法选择与Linter配置
一、选哪种写法?
在无需考虑旧版本兼容的最新Python环境下,优先用小写的list,理由很直接:
- PEP-0585明确要求逐步用内置的小写类型(
list/dict/set等)替代typing模块里的大写别名(List/Dict/Set),这是官方推进的规范方向。 - 小写写法不用额外从
typing模块导入,代码更简洁,减少冗余。
二、怎么配置Linter强制统一风格?
1. 强制使用小写list(推荐)
用flake8 + flake8-typing-imports插件
- 先安装依赖:
pip install flake8 flake8-typing-imports - 在项目根目录新建或修改
.flake8配置文件:[flake8] # 可选:忽略行过长的错误,按需调整 extend-ignore = E501 # 启用typing相关检查规则 enable-extensions = TYP # 禁止从typing导入List、Dict这类别名 TYP001 = True
用pylint
- 编辑项目的
.pylintrc文件,找到[TYPECHECK]区块,添加:
这个规则会直接禁用[TYPECHECK] disallow-typing-aliases = yestyping.List这类别名的使用,强制改用内置小写list。
2. 强制使用大写List(不推荐,仅适配旧团队习惯)
如果团队有历史习惯必须统一用大写List,可以用mypy配合配置:
- 新建或修改
mypy.ini:
也可以搭配flake8的导入排序插件,强制导入[mypy] # 开启严格类型检查 disallow_untyped_defs = True warn_return_any = True # 强制检查导入逻辑,确保从typing导入List forbid_untyped_calls = Truefrom typing import List,但这种逆官方规范的做法不建议长期使用,能转小写就转。
内容的提问来源于stack exchange,提问作者MattG
相关产品推荐
相关产品推荐

