您正在寻找
Optional。
由于您的返回类型可以是
datetime(从返回
datetime.utcnow()),
None也应该使用
Optional[datetime]:
from typing import Optionaldef get_some_date(some_argument: int=None) -> Optional[datetime]: # as defined
在有关打字的文档中,
Optional是以下内容的简写:
Optional[X]等价于Union[X, None]。
其中
Union[X, Y]表示类型
X或的值
Y。
如果由于担心别人可能偶然发现
Optional而没有意识到它的含义而希望变得露骨,则可以始终使用
Union:
from typing import Uniondef get_some_date(some_argument: int=None) -> Union[datetime, None]:
但是我怀疑这是一个好主意,
Optional是一个指示性名称,它确实节省了几次击键。
正如@ Michael0x2a的注释中指出的那样,
Union[T, None]已转换为,
Union[T,type(None)]因此无需在
type此处使用。
在视觉上,这两种方法可能有所不同,但在编程上,结果是 完全相同的 ;
Union[datetime.datetime,NoneType]将是存储在
get_some_date.__annotations__*中的类型:
>>> from typing import get_type_hints>>> print(get_type_hints(get_some_date)){'return': typing.Union[datetime.datetime, NoneType], 'some_argument': typing.Union[int, NoneType]}
*用
typing.get_type_hints抢的对象的
__annotations__直接访问它的属性来代替。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)