应使用*
运算符(即在此(随机)示例中为foo
)解压缩的对象的正确类型注释是什么:
def some_function(foo):
... = bar(*foo)
我知道*
可以解压缩元组和列表,但是它仅限于这两个类吗?或者它具有任何可使其用于其他集合的接口?
答案 0 :(得分:2)
Python将可迭代的任何拆包(因此list
,str
,tuple
,dict
离子型等)。因此,您可以使用Iterable
,例如:
from typing import Iterable
def some_function(foo : Iterable):
bar(*foo)
如果打开包装的物品应为特定类型,则可以在方括号之间指定此名称,例如:
# given the items that are unpacked should all be ints
from typing import Iterable
def some_function(foo : Iterable[int]):
bar(*foo)