None vs NoneType 类型注释
None vs NoneType for type annotation
如果一个函数可以 return None
,类型注释不应该使用 NoneType
吗?
例如,我们不应该使用这个:
from types import NoneType
def my_function(num: int) -> int | NoneType:
if num > 0:
return num
return None
而不是:
def my_function(num: int) -> int | None:
if num > 0:
return num
return None
?
没有。 types.NoneType
was removed in Python 3。尝试从 types
导入 NoneType
将在 Python 3 中生成 ImportError
,在 Python 3.10 之前。 (对于 Python 3.10,types.NoneType
被重新引入;但是,出于类型提示的目的,types.NoneType
和 None
是等价的,为了简洁起见,您应该更喜欢后者。
在 Python 3.10 中,int | None
是描述可能是 None
的 return 类型的方式。但是,对于 3.10 之前的 Python 版本,此语法不受支持,因此您应该使用 Optional[int]
代替。
如果一个函数可以 return None
,类型注释不应该使用 NoneType
吗?
例如,我们不应该使用这个:
from types import NoneType
def my_function(num: int) -> int | NoneType:
if num > 0:
return num
return None
而不是:
def my_function(num: int) -> int | None:
if num > 0:
return num
return None
?
没有。 types.NoneType
was removed in Python 3。尝试从 types
导入 NoneType
将在 Python 3 中生成 ImportError
,在 Python 3.10 之前。 (对于 Python 3.10,types.NoneType
被重新引入;但是,出于类型提示的目的,types.NoneType
和 None
是等价的,为了简洁起见,您应该更喜欢后者。
在 Python 3.10 中,int | None
是描述可能是 None
的 return 类型的方式。但是,对于 3.10 之前的 Python 版本,此语法不受支持,因此您应该使用 Optional[int]
代替。