python - 可以使用 * 运算符解包的对象的正确类型注释?
问题描述
应该使用*
运算符解包的对象的正确类型注释是什么,即foo
在这个(随机)示例中:
def some_function(foo):
... = bar(*foo)
我知道它*
可以解包元组和列表,但它是否仅限于这两个类,或者它是否有任何类型的接口可以使其可用于其他集合?
解决方案
Python 解包任何可迭代对象(如 a list
、str
ing 、tuple
、dict
ionary 等)。因此,您可以使用 an 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)
推荐阅读
- serverless-framework - 在 lambda@edge 上使用Sharp
- python - Fractional Max-Pooling:我发现难以实现的深度神经网络
- android - 如何解决返回 null 的 DefaultTrackSelector#getCurrentMappedTrackInfo?
- iframe - 防止在 iframe 中单击鼠标右键
- javascript - 量角器不断耗尽内存
- istio - 使用授权策略将 Istio Ingress Gateway 配置为需要标头令牌
- python - 如何通过跳过字母和^ char将字符串拆分为列表
- ios - Firebase 推送通知不适用于 iOS
- python - 加载 NLTK 资源时出错:“请使用 NLTK 下载器获取资源:\n\n”
- azure-functions - 耐用的基于功能的设计,适合长时间运行的活动