python泛型类型提示列表

问题描述 投票:0回答:1

我有一个Python函数:

def func (l:list):
    pass

它可以与任何类似数组的对象一起使用:list、np.ndarray 等
我该如何注释

l

我看到有些模块使用

typing.Iterable
类作为注释。但该协议既不包含
__len__
也不包含
__getitem__
方法,而这些方法对于我的
l
参数

是必需的
python python-3.x annotations
1个回答
0
投票

当您需要将参数标记为需要数组的对象时(例如,具有“len”和“getitem”方法的参数),您可以使用typing.Sequence“来指示它。与“Iterable”不同“序列”更精确。确保对象允许索引并具有定义的长度。

以下是定义函数的方法:

from typing import Sequence, Union
def func(l: Sequence[Union[int,float]]):
    pass

在这种情况下:

  • 使用“Sequence”确认对象是可迭代和可索引的 (同时使用“len”和“getitem”方法)。
  • 通过指定
    Union[int float]
    ,表明该序列可以 包含整数或浮点数。

如果您希望在序列中包含多种类型(例如数字类型或混合类型),您可以相应地调整

Union

© www.soinside.com 2019 - 2024. All rights reserved.