假设我有一个函数:
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]表示类型为X或Y的值
如果由于担心其他人可能会无意中发现可选而没有意识到它的含义,您希望明确,那么您可以始终使用联合:
输入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注释中的类型。*:
>&燃气轮机&燃气轮机;从键入导入获取\u类型\u提示
&燃气轮机&燃气轮机&燃气轮机;打印(获取类型提示(获取日期))
{'return':正在键入.Union[datetime.datetime,NoneType],
“some_参数”:typing.Union[int,NoneType]}
*使用键入。获取\u type\u提示以获取对象的\u注释属性,而不是直接访问它