首页 > 解决方案 > 类型检查 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 项目只有数字怎么办?

可以在类型检查级别完成还是我仍将其作为单元测试处理?

标签: python-3.xtypes

解决方案


您可以使用通用序列类型并指定其内容:

from collections.abc import Sequence

def average(numbers: Sequence[float]) -> float:
    return sum(numbers) / len(numbers)

推荐阅读