可以使用*运算符解压缩的对象的正确类型注释?

时间:2018-10-16 18:36:29

标签: python types mypy

应使用*运算符(即在此(随机)示例中为foo)解压缩的对象的正确类型注释是什么:

def some_function(foo):
    ... = bar(*foo)

我知道*可以解压缩元组和列表,但是它仅限于这两个类吗?或者它具有任何可使其用于其他集合的接口?

1 个答案:

答案 0 :(得分:2)

Python将可迭代的任何拆包(因此liststrtupledict离子型等)。因此,您可以使用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)