如何使用类型提示指定“nullable”返回类型

假设我有一个函数:

def获取某些日期(某些参数:int=None)——>%日期时间\或\无%:
如果某个_参数不是无且某个_参数==1:
return datetime.utcnow()
其他:
一无所获

如何为可以是None的内容指定返回类型

您正在寻找可选的

由于返回类型可以是datetime(从datetime.utcnow()返回)或None,因此应使用可选的[datetime]

从输入导入可选
def get_some_date(some_参数:int=None)——>可选[日期时间]:
#按定义

从有关键入的文档中,可选是以下内容的简写:

Optional[X]相当于Union[X,None]

其中,Union[X,Y]表示类型为XY的值


如果由于担心其他人可能会无意中发现可选而没有意识到它的含义,您希望明确,那么您可以始终使用联合

输入import Union的


def get_some_date(some_参数:int=None)——>联合[日期时间,无]:

但我怀疑这是一个好主意,可选是一个指示性名称,它确实节省了几次击键

正如@Michael0x2aUnion[T,None]在评论中指出的那样,已将Union[T,type(None)]转换为Union[T,type(None)],因此无需在此处使用type。</sub

视觉上这些可能不同,但在编程上,在这两种情况下,结果是完全相同的Union[datetime.datetime,NoneType]将是存储在get\u some\u date.\u注释中的类型。*

&gt&燃气轮机&燃气轮机;从键入导入获取\u类型\u提示
&燃气轮机&燃气轮机&燃气轮机;打印(获取类型提示(获取日期))
{'return':正在键入.Union[datetime.datetime,NoneType],
“some_参数”:typing.Union[int,NoneType]}

*使用键入。获取\u type\u提示以获取对象的\u注释属性,而不是直接访问它

发表评论