为后来成为特定类型的元组的空元组设置正确的类型

Posted

技术标签:

【中文标题】为后来成为特定类型的元组的空元组设置正确的类型【英文标题】:Setting the correct type for an empty tuple that later becomes a tuple of a specific type 【发布时间】:2022-01-12 16:57:26 【问题描述】:

我有一个如下所示的 python 函数:

from typing import Tuple

def test() -> Tuple[int]:
    o: Tuple[int] = ()
    for i in range(2):
        o+=(i,)
    return o

用 mypy 评估它会返回错误

error: Incompatible types in assignment (expression has type "Tuple[]", variable has type "Tuple[int]")
error: Incompatible types in assignment (expression has type "Tuple[int, int]", variable has type "Tuple[int]")

在没有 int 规范的情况下分配元组并返回类型 Tuple 可以解决此问题。我也想指定元组的内容。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:
# For tuples of variable size, we use one type and ellipsis
x: tuple[int, ...] = (1, 2, 3)  # Python 3.9+
x: Tuple[int, ...] = (1, 2, 3)

发件人:

https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html

【讨论】:

【参考方案2】:

关于类型提示,TupleList 不同。

Tuple[int] 表示“tuple of 1 int

Tuple[int, int] 表示“tuple of 2 ints”

List[int] 表示“list of ints”

【讨论】:

以上是关于为后来成为特定类型的元组的空元组设置正确的类型的主要内容,如果未能解决你的问题,请参考以下文章

Python:元组类型

04元组

好好学python · 元组

好好学python · 元组

Python 学习 第十七篇:元组和集合

关于python的元组操作