Python类型提示:我应该使用什么表示可以是任何可迭代对象的变量?
考虑这个函数:
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
的一个别名,所以根据评论的建议,你应该使用后者。