尽管PEP 484建议None表示type(None),但是不应该显式使用后者。类型提示规范不包括任何形式的type(...)。这在技术上是一个运行时表达式,它的支持完全取决于类型检查器。mypy项目是type(None)的considering to remove support,并将其从484中移除。
Or maybe we should update PEP 484 to not suggest that type(None) is valid as a type, and None is the only correct spelling? There should one -- and preferably only one -- obvious way to do it etc.
TLDR:a
void
返回类型注释的惯用等价物是-> None
。Python中的类型暗示并不严格要求实际的类型。例如,注释可以使用类型名的字符串:
Union[str, int]
、Union[str, 'int']
、'Union[str, int]'
,并且各种变体是等价的。类似地,类型注释
None
被认为意味着“是NoneType
”。这不仅可以用于返回类型,尽管您将在那里看到它的最常见情况:这也适用于泛型类型。例如,可以使用
Generator[int, None, None]
中的None
来指示生成器不接受或返回值。尽管PEP 484建议
None
表示type(None)
,但是不应该显式使用后者。类型提示规范不包括任何形式的type(...)
。这在技术上是一个运行时表达式,它的支持完全取决于类型检查器。mypy
项目是type(None)
的considering to remove support,并将其从484中移除。“X的类型”的静态等价物是
Type[X]
。这对None
也有效:然而,它基本上等同于
Type[True]
和类似的。它消除了一种特殊情况(使用值而不是类型)和另一种特殊情况(使用从值派生的类型)。惯用的特例就是使用None
。省略返回类型并不意味着没有返回值。根据PEP 484:
这意味着该值被认为是动态类型的和静态的supports any operation。这实际上是
void
的相反含义。这直接来自PEP 484 -- Type Hints文档:
而且,正如您所看到的,大多数示例使用
None
作为返回类型。相关问题 更多 >
编程相关推荐