我有一个Python函数:
def func (l:list):
pass
它可以与任何类似数组的对象一起使用:list、np.ndarray 等
我该如何注释
l
?
我看到有些模块使用
typing.Iterable
类作为注释。但该协议既不包含 __len__
也不包含 __getitem__
方法,而这些方法对于我的 l
参数 是必需的
当您需要将参数标记为需要数组的对象时(例如,具有“len”和“getitem”方法的参数),您可以使用typing.Sequence“来指示它。与“Iterable”不同“序列”更精确。确保对象允许索引并具有定义的长度。
以下是定义函数的方法:
from typing import Sequence, Union
def func(l: Sequence[Union[int,float]]):
pass
在这种情况下:
Union[int float]
,表明该序列可以
包含整数或浮点数。如果您希望在序列中包含多种类型(例如数字类型或混合类型),您可以相应地调整
Union
。