Python类型提示:我应该使用什么表示可以是任何可迭代对象的变量?

3 投票
1 回答
96 浏览
提问于 2025-04-13 17:51

考虑这个函数:

def mysum(x)->int:
    s = 0
    for i in x:
        s += i
    return s

这个参数 x 可以是 list[int](整数列表)或者 set[int](整数集合),它也可以是 d.keys(),其中 d 是一个字典,或者是 range(10)(从0到9的数字范围),还有其他任何可迭代的东西,只要里面的元素是整数。那么,x 的正确类型提示应该是什么呢?

我的 Python 版本是 3.10 及以上。

1 个回答

7

你可以使用 typing.Iterable

from typing import Iterable

def mysum(x: Iterable[int]) -> int:
    s = 0
    for i in x:
        s += i
    return s

补充说明:typing.Iterable 其实是 collections.abc.Iterable 的一个别名,所以根据评论的建议,你应该使用后者。

撰写回答