返回None还是空集合?防御式编程的关键细节

张开发
2026/5/17 9:30:00 15 分钟阅读
返回None还是空集合?防御式编程的关键细节
我们来做一个假设假设你有一个函数用于查找数据库中的某个集合结果当查不到数据时应该返回什么错误用法def get_users(department): # 查不到返回 None if department 财务: return None return [张三, 李四]正确用法def get_users(department): if department 财务: return [] return [张三, 李四]返回 []空集合而不是 None 能确保调用者在不判断的情况下直接使用for user in get_users(财务): print(user) # 不会报错这在写 API SDK、数据接口、中间层函数时尤其重要。减少调用方的防御代码是良好接口设计的关键。可能有朋友要问为什么空集合更好有以下几个大致的原因遵循最小意外原则空集合是合法的可迭代对象避免 NoneType 错误最常见的 Python 运行时错误之一简化调用逻辑无需前置判空检查类型一致性保持返回类型稳定list → list那么何时该返回 None通常在下面三种情况下操作失败且无合理默认值时需要区分无结果和错误时函数名暗示可能返回 None

更多文章