【问题标题】:How to specify the input type of a function in Python?如何在 Python 中指定函数的输入类型?
【发布时间】:2021-07-18 11:42:18
【问题描述】:

我有一个函数,它接受一个list 并返回一个list,当我为它编写单元测试时,我发现如果输入是dict 或@987654324,该函数不会引发错误@,这在 Python 中可以接受吗?找不到相关信息,如果不能接受,如何指定输入类型只列出?

这是函数:

def list_id_in_list(string_list: list) -> list:

    id_list = []
    for id in map(pre_defined_id_list, string_list):
        if not id:
            id_list.append([])
        else:
            id_list.append([i[2] for i in id])


    return id_list

这个函数将预定义的id列表映射到给定的字符串列表,遍历字符串列表,看看是否有id字符串,然后返回一个只包含标识的id的列表。

这个函数似乎适用于strdict 输入类型并返回空白列表,我该如何修改它并指定输入到列表? 希望这是有道理的,谢谢。

【问题讨论】:

    标签: python list unit-testing types


    【解决方案1】:

    Python 的类型注解只是提示,并非强制执行。

    这部分是为了允许鸭子打字(例如,您可以传入字符串元组或字符串生成器......)。

    如果你需要强制执行,你可以添加

    if not isinstance(string_list, list):
        raise TypeError("string_list must be a list")
    if not all(isinstance(val, str) for val in string_list):
        raise TypeError("string_list members must all be strings")
    

    或类似的功能。

    【讨论】:

    • 谢谢,只是想知道“强制输入类型”是否是一个好习惯?
    • 在我看来,一般来说不是。不过,您可以使用类型检查器(例如 mypy)对您的程序进行静态类型检查。
    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 2020-11-04
    • 2019-06-23
    • 2016-10-16
    • 2016-07-18
    • 2016-05-20
    相关资源
    最近更新 更多