`from typing`与`from collections.abc`在标准原始类型注解中的比较?
我在看标准库的文档,发现from typing import Sequence
其实是在后台调用collections.abc
。
最开始的时候,有一些警告和错误提示,建议大家从collections
包迁移到collections.abc
,这是因为一些抽象类的变化。可以在这里查看。不过现在这些抽象类已经在新的位置稳定下来了,那么使用这两者中的任何一个都可以吗?我在代码库中看到from collections.abc import [etc]
,我在想,做类型注解的时候,直接从typing
导入是不是更方便呢?
Cython 源代码:
Sequence = _alias(collections.abc.Sequence, 1)
1 个回答
3
不过,现在这些抽象概念已经放在了一个新的地方,使用其中任何一个可以吗?
最好不要这样做。文档上特别说明:
class typing.Sequence(Reversible[T_co], Collection[T_co])
这是一个已经不推荐使用的别名,指向 collections.abc.Sequence。
自3.9版本以来就不推荐使用:collections.abc.Sequence 现在支持下标访问(即使用 [])。
如果它被标记为不推荐使用,可能在以后的Python版本中会被删除。所以建议使用 collections.abc
的通用类。