Python 键入 List[Dict] 与 List[dict]

问题描述 投票:0回答:2

向 python 函数添加类型提示时,哪一个是首选?

from typing import List, Dict

def example_1() -> List[Dict]:
    pass

def example_2() -> List[dict]:
    pass

我知道如果我想在 dict 中指定键和值类型,我需要使用 Dict,但我不想这样做。

两者有什么区别吗? 如果是的话,哪个是首选?

python python-typing
2个回答
35
投票

从Python 3.9开始,标准集合可以添加下标。

typing
变体已被弃用,因此:

元组#打字.元组

列表#打字。列表

dict # 打字.Dict

设置#打字。设置

...

不推荐从

typing
导入这些内容。由于 PEP 563 以及尽量减少输入对运行时影响的目的,此弃用不会生成
DeprecationWarning
。相反,当被检查程序的目标版本被标记为 Python 3.9 或更高版本时,类型检查器可能会警告此类已弃用的用法。建议在整个项目范围内消除这些警告。

已弃用的功能将从 Python 3.9.0 发布 5 年后发布的第一个 Python 版本中的

typing
模块中删除。


6
投票

它如何影响类型覆盖率没有实际差异。

作为风格/可读性的问题,我建议使用

Dict[Any, Any]
(或者
dict[Any, Any]
如果您使用的是支持该功能的版本),因为它使读者更明显地意识到没有类型检查字典的键和值。 新手可能不明白裸露的
dict
/
Dict
类型有多不安全,但如果他们看到那里的
Any
,就更有可能认识到危险。

© www.soinside.com 2019 - 2024. All rights reserved.