类型注释的 None 与 NoneType

Bri*_*ian 6 python typing nonetype python-typing

如果函数可以返回None,那么不应该使用类型注释吗NoneType

例如,我们不应该使用这个:

from types import NoneType

def my_function(num: int) -> int | NoneType:

    if num > 0:
        return num

    return None
Run Code Online (Sandbox Code Playgroud)

代替:

def my_function(num: int) -> int | None:

    if num > 0:
        return num

    return None
Run Code Online (Sandbox Code Playgroud)

Bro*_*ark 9

types.NoneTypePython 3 中删除了No. 。尝试导入NoneTypefrom将在 Python 3.10 之前的 Python 3 中types生成。ImportError(对于 Python 3.10,types.NoneType重新引入了 ;但是,出于类型提示的目的,types.NoneTypeNone是等效的,为了简洁起见,您应该更喜欢后者。)

Python 3.10中,int | None是描述可能的返回类型的方式None。但是,对于 3.10 之前的 Python 版本,不支持此语法,因此您应该改用Optional[int]