当前位置: 首页 > 面试题库 >

仅返回一组特定值的函数的类型提示

慕容灿
2023-03-14
问题内容

我有一个只能返回的函数ab或者c它们都是类型T。我想将这一事实包括在签名中,因为它们在功能上下文中具有特殊含义。我怎么做?

目前,我用这个

def fun(...) -> "a or b or c":
    #briefly explain the meaning of a, b and c in its docstring

那是正确的吗?

我知道我可以做到

def fun(...) -> T:
    #briefly explain the meaning of a, b and c in its docstring

但是正如我所说,我想在签名中表示该函数仅返回那些特定值。


问题答案:
from typing_extensions import Literal
# from typing import Literal  # Python 3.8 or higher

def fun(b: int) -> Literal["a", "b", "c"]:
    if b == 0:
        return "a"
    if b == 1:
        return "b"
    return "d"

mypy能够将检出return "d"为无效语句:

error: Incompatible return value type (got "Literal['d']",
expected "Union[Literal['a'], Literal['b'], Literal['c']]")

Python 3.8

多亏了PEP
586
,将Literal是已经包含默认的Python
3.8typing模块。



 类似资料:
  • 问题内容: 也许这是一个愚蠢的问题,但是有没有办法找到所有返回特定类型的函数(在标准库或GOPATH中)? 例如,有许多函数使用io.Writer作为参数。现在,我想知道如何创建io.Writer,并且有很多方法可以做到这一点。但是,如何能轻松地找到所有方法而又无需猜测软件包并仔细查看所有方法以找到返回io.Writer(或我追随的其他任何类型)的方法? 编辑: 我应该扩展我的问题,以查找实现特定

  • 本文向大家介绍PowerShell函数指定返回值类型实例,包括了PowerShell函数指定返回值类型实例的使用技巧和注意事项,需要的朋友参考一下 本文介绍在自定义PowerShell函数时,如何设置返回值的数据类型。PowerShell函数的返回值可以有类型,也可以没有类型,跟输入参数相似。     定义PowerShell函数的返回值类型,要使用OutputType这个指令。将这个指令放到pa

  • 给定以下函数的文本: 可以编译一个正则表达式来确定< code>f3()调用的返回类型,而不实际调用函数吗?

  • 问题内容: 有没有人看到像这样的方法签名后放置的数组? 版画 过去,“ C”兼容性是一种奇怪的表示法,但我也无法想象有人用C编写这种代码。 有谁知道为什么甚至允许这样做? 如果有问题,我正在使用Java 7 update 10。 这与Java 6中的功能相同。http://ideone.com/91rZV1 顺便说一句,这不会编译,我也不希望它编译 问题答案: 有谁知道为什么甚至允许这样做? 在这

  • 我正在查看MongoDB在和投影上的留档。我试图弄清楚如何只返回投影数组字段的子集,但我似乎无法弄清楚。 相关帖子: > 我没有试图从mongob聚合框架中执行$片-获取嵌套数组的第一个文档字段。 我也没有尝试从mongo projection中的仅返回数组值展平子文档,因为我仍然需要顶部文档中的一些字段。 假设我在集合中有以下文档: 我想要执行的查询是: 我希望它只返回数组中为的子文档下的。例如

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是