python-3.x - 类型检查 python 列表、数组或序列仅用于数字类型
问题描述
我只是加快了类型检查的速度并想试一试。
IIUC,如果我想平均一个列表并返回一个浮点数,我可以这样做:
def average(x_lst: list) -> float:
return sum(x_lst)/float(len(x_lst))
但是,如果我还想允许数组和系列,那么我可以这样做:
from typing import TypeVar
lst_like = TypeVar(list, np.array, pd.Series)
def average(x_lst: lst_like) -> float:
return sum(x_lst)/float(len(x_lst))
但是如果我想检查 lst_like 项目只有数字怎么办?
可以在类型检查级别完成还是我仍将其作为单元测试处理?
解决方案
您可以使用通用序列类型并指定其内容:
from collections.abc import Sequence
def average(numbers: Sequence[float]) -> float:
return sum(numbers) / len(numbers)