python 单独检查对象是否为空列表|如果一个对象没有被传递|如果对象未列出

h7appiyu  于 2023-10-14  发布在  Python
关注(0)|答案(1)|浏览(107)

我有这个功能:

def fun(keywords: list[str] = None):

如何分别检查:
1.如果keywords未通过
1.如果keywords是空列表
1.如果keywords不是列表
我试过这个:

if not keywords:
        raise ValueError("not passed")
    if not isinstance(keywords, list):
        raise TypeError("keywords must be an list")
    if isinstance(keywords, list) and (not bool(len(keywords))):
        raise ValueError("empty list passed")

第一个if在两种情况下运行(1.(2)在条件

if isinstance(keywords, list) and (not bool(len(keywords))):
        raise ValueError("empty list passed")

代码不被执行。在第一个条件中添加以下内容是否是一种良好的做法:

if not keywords and keywords != []:
        raise ValueError("not passed")
kkbh8khc

kkbh8khc1#

None比较,判断它是否未通过:

if keywords is None:
    raise ValueError("not passed")
if not isinstance(keywords, list):
    raise TypeError("keywords must be an list")
if not keywords:
    raise ValueError("empty list passed")

您不需要在最后一个if中进行isinstance()检查,因为前一个if已经检查过了。

相关问题