You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当输入可为None时,判断输入长度为0的Python惯用写法

更符合Python惯用风格的写法优化

原代码的问题在于用assert做业务逻辑判断,以及依赖异常捕获处理预期的输入分支——assert是用来做调试自检的,生产环境加-O参数运行时会被直接忽略,导致逻辑失效;同时把None和非空容器这两种预期情况塞进异常处理,可读性很差。

根据你的需求(空容器直接返回{},None或非空容器执行处理逻辑后返回{}),推荐两种更Pythonic的写法:

写法一:显式分支判断(最直观)

def func(ids=None):
    # 只有当ids不是None且为空容器时,直接返回{}
    if ids is not None and len(ids) == 0:
        return {}
    # do some stuff
    return {}

写法二:先统一默认值再判断

如果后续逻辑需要对ids做容器操作,可以先把None转为空容器,再判断长度:

def func(ids=None):
    # 将None统一转为空列表(不影响len判断,也适配后续容器操作)
    ids = ids or []
    if len(ids) == 0:
        return {}
    # do some stuff
    return {}

注:如果你的场景中允许ids是其他假值(比如空字符串),这种写法会把它们也转为空列表,根据实际需求调整即可。

这两种写法都避免了异常滥用,逻辑清晰直白,符合Python"简单可读"的设计哲学。

内容的提问来源于stack exchange,提问作者u2j4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:09:50