假设我有一个函数:
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
?
您正在寻找Optional
。
由于您的返回类型可以是datetime
(从返回datetime.utcnow()
),None
也应该使用Optional[datetime]
:
from typing import Optional
def 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 Union
def 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__
直接访问它的属性来代替。
假设我有一个函数: 如何指定可以为的返回类型?
我有一个python函数,可以返回或。有没有一种方法可以使用类型提示指定返回类型? 比如,这是正确的做法吗?
问题内容: 我想在当前的Python 3.5项目中使用类型提示。我的函数应该接收一个函数作为参数。 如何在类型提示中指定类型函数? 我检查了PEP 483,但在那里找不到函数类型提示。 问题答案: 正如@jonrsharpe在评论中指出的,可以使用以下方法完成: 问题是,将其本身翻译为: 一个Callable接受 任意数量的/类型的 参数,并返回任何类型的值。在大多数情况下,这不是您想要的,因为您
为了概括这个问题,我借用了Zelenski CS课堂讲义中的材料。而且,这与我的具体问题有关,因为几年前我从另一位讲师那里学习了C语言的这种方法。讲义在这里。我对C的理解很低,因为我偶尔使用它。基本上,我需要编写一个程序的几次,我回到课堂材料,找到类似的东西,然后从那里开始。 在本例(第4页)中,Julie正在字符串函数中使用递归算法查找单词。为了减少递归调用的数量,她添加了一个决策点。 为了增加
我想使用此函数返回s的列表,但当以这种方式设置时,我会收到未选中的分配警告,因为返回的列表未指定包含s。这会导致生成失败。 尝试在返回语句中转换,但随后我得到一个未检查的转换警告 尝试指定列表类型时声明,但然后我还必须指定响应类型参数(-
我正在使用泛型在python中创建一个List类(类似于java列表的列表)。类节点也是通用的,我正在为上一个和下一个节点创建 getter 和 setters 方法。我想知道如何返回像类节点本身这样的类型?这是我的进步: 我试过 但它给了我错误