【发布时间】:2014-11-24 19:45:27
【问题描述】:
我正在寻找关于何时适合和/或希望从 Python 函数返回 None 而不是空列表或零长度字符串的良好约定的指导?
例如,现在,我正在编写一个 Python 类来连接 GIT(暂时不用担心为什么我必须从头开始编写它),并且有几个函数返回值。以一个名为“get_tags”的函数为例。通常,它返回一个列表,但是,如果 repo 中还没有标签,是返回一个空列表还是 None 更好?
我意识到对此会有多种观点,这就是我问这个问题的原因。我敢肯定两者都有优点和缺点,这是我正在寻找的信息。
这方面有一般惯例吗?
【问题讨论】:
-
已经讨论过here
-
如果你的函数应该返回一个标签列表,而要返回的标签数量恰好为零,它应该返回一个空列表。然后,无论调用该函数,都可能不必以不同的方式处理特殊情况。
-
我很难想到
None比空列表更有优势的情况。另一方面,空列表允许您编写诸如my_list.extend(get_tags(...))之类的代码,因为get_tags旨在始终返回一个列表。我的感觉(它本身并不是一个真正的约定)是,如果函数调用中发生异常情况,可能会返回None,但您不希望出于任何原因使用异常。 -
@kiran.koduru,这是相关的,但不同。这篇文章询问是否返回 None 或其他带有 False 真实性的东西,例如
[]或""。 -
我会抛出我的经验法则:如果你的函数通常返回一个字符串,返回
""。如果它通常返回一个列表,则返回[]。否则返回None。
标签: python python-2.7 python-3.x ipython