首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接元组的Mypy类型

连接元组的Mypy类型
EN

Stack Overflow用户
提问于 2019-02-08 23:44:34
回答 3查看 552关注 0票数 3

我有一个接受特定元组和连接的函数,我试图指定输出的类型,但mypy不适合我。

文件test.py

代码语言:javascript
复制
from typing import Tuple

def test(a: Tuple[str, str], b: Tuple[int, int]) -> Tuple[str, str, int, int]:
    return a + b

mypy --ignore-missing-imports test.py身份运行mypy 0.641会得到:

代码语言:javascript
复制
test.py:5: error: Incompatible return value type (got "Tuple[Any, ...]", expected "Tuple[str, str, int, int]")

我猜这是真的,但更通用,因为我指定了我的输入。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-09 00:00:44

这是一个known issue,但似乎没有时间表来支持mypy进行正确的类型推断。

票数 5
EN

Stack Overflow用户

发布于 2019-02-09 00:10:46

mypy当前不支持连接固定长度的元组。作为一种解决方法,您可以从单个元素构造一个元组:

代码语言:javascript
复制
from typing import Tuple

def test(a: Tuple[str, str], b: Tuple[int, int]) -> Tuple[str, str, int, int]:
    return a[0], a[1], b[0], b[1]

或者,如果您有Python 3.5+,则使用unpacking

代码语言:javascript
复制
def test(a: Tuple[str, str], b: Tuple[int, int]) -> Tuple[str, str, int, int]:
    return (*a, *b)  # the parentheses are required here
票数 1
EN

Stack Overflow用户

发布于 2019-02-09 00:28:49

下面是一个不太冗长的解决方法(python3.5+):

代码语言:javascript
复制
from typing import Tuple

def f(a: Tuple[str, str], b: Tuple[int, int]) -> Tuple[str, str, int, int]:
    return (*a, *b)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54595866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档