当前位置: 首页 > 知识库问答 >
问题:

如何使用类型提示指定“可为空”返回类型

汪建德
2023-03-14

假设我有一个函数:

def get_some_date(some_argument: int=None) -> %datetime_or_None%:
    if some_argument is not None and some_argument == 1:
        return datetime.utcnow()
    else:
        return None

如何指定可以为None返回类型?

共有2个答案

臧俊杰
2023-03-14

您可以只使用垂直线datetime|无(类似于OR运算符):

def get_some_date(some_argument: int=None) -> datetime | None:
   # rest of code
魏凡
2023-03-14

您正在寻找可选

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

from typing import Optional

def get_some_date(some_argument: int=None) -> Optional[datetime]:
    # as defined

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

< code >可选的[X]等效于< code>Union[X,None]。

其中< code>Union[X,Y]表示类型为< code>X或< code>Y的值。

如果您想明确表示,因为担心其他人可能会偶然发现可选并且没有意识到它的含义,您可以始终使用Union

from typing import Union

def get_some_date(some_argument: int=None) -> Union[datetime, None]:

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

< sub >正如@Michael0x2a在评论中指出的那样< code>Union[T,None]被转换为< code>Union[T,type(None)],因此这里不需要使用< code>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]}

< sup>*使用< code > typing . get _ type _ hints 获取对象的< code>__annotations__属性,而不是直接访问它。

 类似资料:
  • 问题内容: 假设我有一个函数: 如何为可以指定的东西指定返回类型? 问题答案: 您正在寻找。 由于您的返回类型可以是(从返回),也应该使用: 在有关打字的文档中,是以下内容的简写: 等价于。 其中表示类型或的值。 如果由于担心别人可能偶然发现而没有意识到它的含义而希望变得露骨,则可以始终使用: 但是我怀疑这是一个好主意,是一个指示性名称,它确实节省了几次击键。 正如@ Michael0x2a的注释

  • 我有一个python函数,可以返回或。有没有一种方法可以使用类型提示指定返回类型? 比如,这是正确的做法吗?

  • 问题内容: 我想在当前的Python 3.5项目中使用类型提示。我的函数应该接收一个函数作为参数。 如何在类型提示中指定类型函数? 我检查了PEP 483,但在那里找不到函数类型提示。 问题答案: 正如@jonrsharpe在评论中指出的,可以使用以下方法完成: 问题是,将其本身翻译为: 一个Callable接受 任意数量的/类型的 参数,并返回任何类型的值。在大多数情况下,这不是您想要的,因为您

  • 假设我创建了一个定义如下的类,并对其调用了方法: 方法有一个名为的参数,它是一个对象。我如何使用类型提示来指定它?我假设您只需输入类名,如,但它不起作用。当我运行它时,我得到一个。我还尝试了新朋友:uuuu main。学生,但它给了我同样的错误。我做错了什么?

  • 我正在尝试为此方法返回NotFound,但收到以下错误: 不明白应该怎么投,参数等于“1”想退一个404 我只需要这样做:

  • 问题内容: PHP 7引入了返回类型声明。这意味着我现在可以指示返回值是某个类,接口,数组,可调用或新暗示的标量类型之一,对于函数参数而言,这是可能的。 通常,值并不总是存在,并且您可能返回某种类型的值或null。尽管可以通过将参数的默认值设置为null()来使参数为可空,但似乎没有办法对返回类型执行此操作。的确是这样,还是我不知如何找到方法呢?这些不起作用: 问题答案: PHP 7.1现在支持可